Import Geant4 5.1.0 source tree

This commit is contained in:
Gabriele Cosmo
2016-06-09 10:15:15 +02:00
parent 37fff30d2e
commit fbd4999cf7
4396 changed files with 56662 additions and 52446 deletions
+22
View File
@@ -0,0 +1,22 @@
# $Id: GNUmakefile,v 1.1 2003/03/10 01:43:35 asaim Exp $
# --------------------------------------------------------------
# GNUmakefile for examples module. Gabriele Cosmo, 06/04/98.
# --------------------------------------------------------------
name := exampleN07
G4TARGET := $(name)
G4EXLIB := true
ifndef G4INSTALL
G4INSTALL = ../../..
endif
.PHONY: all
all: lib bin
include $(G4INSTALL)/config/binmake.gmk
visclean:
rm -f g4*.prim g4*.eps g4*.wrl
rm -f .DAWN_*
+26
View File
@@ -0,0 +1,26 @@
$Id: History,v 1.3 2003/04/29 06:58:07 asaim Exp $
-------------------------------------------------------------------
=========================================================
Geant4 - an Object-Oriented Toolkit for Simulation in HEP
=========================================================
Example N07 History file
------------------------
This file should be used by the G4 example coordinator to briefly
summarize all major modifications introduced in the code and keep
track of all tags.
----------------------------------------------------------
* Reverse chronological order (last date on top), please *
----------------------------------------------------------
April 29, 2003 M.Asai (exampleN07-V05-00-04)
- Added fileIO macro and a couple of other sample macro files.
April 28, 2003 G.Cosmo (exampleN07-V05-00-03)
- Added large_N macro. Reduced number of events in the standard macro.
April 25, 2003 G.Cosmo (exampleN07-V05-00-02)
- Fixed exampleN07.cc to protect against use of TCSH.
- Created.
+182
View File
@@ -0,0 +1,182 @@
$Id: README,v 1.2 2003/04/09 23:20:58 asaim Exp $
-------------------------------------------------------------------
=========================================================
Geant4 - an Object-Oriented Toolkit for Simulation in HEP
=========================================================
ExampleN07
----------
This example simulates three simplified sandwitch calorimeters.
The main features demonstrated in this example are :
1. Utilizing a concrete run class derived from G4Run base class for
accumulating physics quantities and hits as a run
2. Changing calorimeter geometries without re-building a world volume
3. Changing materials used in parameterized volumes
4. Instantiating more than one sensitive detectors with different
module names from one concrete sensitive detector class
5. Defining geometrical regions ans setting production thresholds
for each region
1- Utilizing a concrete run class derived from G4Run base class for
accumulating physics quantities and hits as a run
G4Run is a class the user can inherit and create his/her own concrete
class for accumulating information useful to him/her. It has a virtual
method RecordEvent(const G4Event*), which will be invoked by G4RunManager
at the end of processing each event. By implemeting this method in the
user'r concrete run class, he/she can store information associating with
G4Event class itself and hits collections attached with G4Event. In this
example, ExN07Run is the class derived from G4Run. In the method
ExN07Run::RecordEvent(const G4Event*), in addition to counting the
number of events, all hits collections are accessed to accumulate
energy depositions, step lengths and number of steps.
In case the user create his/her own run class, an object of this class
must be instantiated in the method GenerateRun() of his/her concrete
class derived from G4UserRunAction base class. The pointer to this run
object must be returned by this method. In this example, ExN07RunAction
is the class which instantiating ExN07Run class object. In
ExN07RunAction::EndOfRunAction(const G4Run*) method, ExN07Run object
is analized to output the run summary.
It should be noted that some information about generated secondaries
are collected in ExN07StackinAction instead of sensitive detector class.
ExN07StackingAction::ClassifyNewTrack(const G4Track*) method is used
not for classifying tracks sent to the stack, but for accessing to all
secondaries generated in an event.
2- Changing calorimeter geometries without re-building a world volume
In ExN07DetectorConstruction, all solids, logical and physical volumes
are constructed only once at the first invocation of Constuct() method.
Positions and number of slices are changed not by re-constructing another
objects but by modifying data members of already existing objects as
it is implemented in ExN07DetectorConstruction::SetNumberOfLayers(G4int)
for changing the number of parameterized volumes, and also
ExN07DetectorConstruction::SetSerialGeometry(G4bool) for changing the
position of placed volumes.
3- Changing materials used in parameterized volumes
Materials of absorber and sensitive gap in calorimeters are defined by
ExN07GapParameterisation::ComputeMaterial(const G4int,G4VPhysicalVolume*),
as well as positions of each layer to be defined by
ExN07GapParameterisation::ComputeTransformation(const G4int,
G4VPhysicalVolume*).
4- Instantiating more than one sensitive detectors with different
module names from one concrete sensitive detector class
ExN07CalorimeterSD is constructed three times with deferent module names
in ExN07DetectorConstruction::Construct(). In addition, each detector
create two hits collections of ExN07CalorHit. Thus, in total, six hits
collections of same type are created for each event. To access to each
of these collections in ExN07EventAction, both module name and collection
name are combinedly used.
5- Defining geometrical regions ans setting production thresholds
for each region
Setting production thresholds (so-called production cuts) to individual
region of a detector geometry is the new feature provided by Geant4 5.1
release. This feature is also called as "Cuts per region".
Please note that this new feature is supporsed to be used only by the
users,
a) who is simulating most complex geometry such as an LHC detector,
b) and who has enough experience of simulating EM showers in matter.
We strongly recommend to compare the simulated results of this new
feature with the results of the same geometry but having uniform
production thresholds. Setting completely different cut values for
individual region may break the coherent and comprehensive accuracy
of the simulation. Thus such cut values should be carefully optimized
by the user with comparison with results of uniform cuts.
In ExN07DetectorConstruction::Construct(), Three objects of G4Region
class are instantiated and set to the logical volumes of each of three
calorimeter modules. Also, these individual logical volumes are
registered as "root logical volume" so that all daghter volumes in
these logical volumes are also affected by the corresponding regions.
In ExN07PhysicsList::SetCuts(), in addition to set the default threshold
values for the world volume, three threshold values are set to three
calorimeter regions respectively. By setting production thresholds to
a region, gamma, electron or positron will not be generated as a
secondary if its range is shorter than the production threshold of that
particular region. Please note that some EM processes still generate
such secondary below threshold.
6- Macro files
exampleN07.in
To be used for batch mode. The reference output file is made by this
macro file.
sample.mac
To be used for interactive mode. Issue "/control/execute sample.mac"
when "Idle>" prompt appears.
vis.mac
Setting visualization parameters. This macro file will be called
automatically when interactive execution starts.
7- UI commands defined in this example
Command /N07/setAbsMat
Guidance :
Select Material of the Absorber.
Parameter : choice
Parameter type : s
Omittable : False
Candidates : Aluminium liquidArgon Lead Water Scintillator Air Galactic
Command /N07/setGapMat
Guidance :
Select Material of the Gap.
Parameter : choice
Parameter type : s
Omittable : False
Candidates : Aluminium liquidArgon Lead Water Scintillator Air Galactic
Command /N07/numberOfLayers
Guidance :
Set number of layers.
Range of parameters : nl>0
Parameter : nl
Parameter type : i
Omittable : False
Command /N07/serialGeometry
Guidance :
Select calorimeters to be placed in serial or parallel.
Parameter : serialize
Parameter type : b
Omittable : False
Command /N07/verbose
Guidance :
Set verbosity of each event.
Range of parameters : vl>=0 && vl<10
Parameter : vl
Parameter type : i
Omittable : True
Default value : taken from the current value
+109
View File
@@ -0,0 +1,109 @@
//
// ********************************************************************
// * DISCLAIMER *
// * *
// * The following disclaimer summarizes all the specific disclaimers *
// * of contributors to this software. The specific disclaimers,which *
// * govern, are listed with their locations in: *
// * http://cern.ch/geant4/license *
// * *
// * Neither the authors of this software system, nor their employing *
// * institutes,nor the agencies providing financial support for this *
// * work make any representation or warranty, express or implied, *
// * regarding this software system or assume any liability for its *
// * use. *
// * *
// * This code implementation is the intellectual property of the *
// * GEANT4 collaboration. *
// * By copying, distributing or modifying the Program (or any work *
// * based on the Program) you indicate your acceptance of this *
// * statement, and all its terms. *
// ********************************************************************
//
//
// $Id: exampleN07.cc,v 1.3 2003/04/25 17:03:36 gcosmo Exp $
// GEANT4 tag $Name: geant4-05-01 $
//
//
// --------------------------------------------------------------
// GEANT 4 - exampleN07
//
// --------------------------------------------------------------
// Comments
//
// --------------------------------------------------------------
#include "G4RunManager.hh"
#include "G4UImanager.hh"
#include "G4UIterminal.hh"
#include "G4UItcsh.hh"
#ifdef G4VIS_USE
#include "ExN07VisManager.hh"
#endif
#include "ExN07DetectorConstruction.hh"
#include "ExN07PhysicsList.hh"
#include "ExN07PrimaryGeneratorAction.hh"
#include "ExN07RunAction.hh"
#include "ExN07EventAction.hh"
#include "ExN07StackingAction.hh"
int main(int argc,char** argv) {
// Construct the default run manager
G4RunManager * runManager = new G4RunManager;
// set mandatory initialization classes
runManager->SetUserInitialization(new ExN07DetectorConstruction);
runManager->SetUserInitialization(new ExN07PhysicsList);
#ifdef G4VIS_USE
// visualization manager
G4VisManager* visManager = new ExN07VisManager;
visManager->Initialize();
#endif
// set user action classes
runManager->SetUserAction(new ExN07PrimaryGeneratorAction);
runManager->SetUserAction(new ExN07RunAction);
runManager->SetUserAction(new ExN07EventAction);
runManager->SetUserAction(new ExN07StackingAction);
//Initialize G4 kernel
runManager->Initialize();
// get the pointer to the User Interface manager
G4UImanager* UI = G4UImanager::GetUIpointer();
if (argc==1) // Define UI session for interactive mode.
{
G4UIsession* session=0;
// G4UIterminal is a (dumb) terminal.
#ifdef G4UI_USE_TCSH
session = new G4UIterminal(new G4UItcsh);
#else
session = new G4UIterminal();
#endif
UI->ApplyCommand("/control/execute vis.mac");
session->SessionStart();
delete session;
}
else // Batch mode
{
G4String command = "/control/execute ";
G4String fileName = argv[1];
UI->ApplyCommand(command+fileName);
}
// job termination
#ifdef G4VIS_USE
delete visManager;
#endif
delete runManager;
return 0;
}
+57
View File
@@ -0,0 +1,57 @@
/control/verbose 2
/run/particle/verbose 1
#
#
#
/run/setCutForRegion Calor-A 0.1 mm
/run/setCutForRegion Calor-B 1 mm
/run/setCutForRegion Calor-C 1 cm
/run/beamOn 10
/run/dumpRegion
/run/dumpCouples
# store physice table
# set store format : 0 binary 1 ascii
/run/particle/setStoredInAscii 0
/control/shell mkdir -p physTableBinary
/run/particle/storePhysicsTable physTableBinary
#
#
#
/run/setCutForRegion Calor-A 0.2 mm
/run/setCutForRegion Calor-B 2 mm
/run/setCutForRegion Calor-C 2 cm
/run/beamOn 10
/run/dumpRegion
/run/dumpCouples
# store physice table
# set store format : 0 binary 1 ascii
/run/particle/setStoredInAscii 1
/control/shell mkdir -p physTableAscii
/run/particle/storePhysicsTable physTableAscii
#
#
#
/run/setCutForRegion Calor-A 0.1 mm
/run/setCutForRegion Calor-B 1 mm
/run/setCutForRegion Calor-C 1 cm
/run/particle/setStoredInAscii 0
/run/particle/retrievePhysicsTable physTableBinary
/run/beamOn 10
/run/dumpRegion
/run/dumpCouples
#
#
#
/run/setCutForRegion Calor-A 0.2 mm
/run/setCutForRegion Calor-B 2 mm
/run/setCutForRegion Calor-C 2 cm
/run/particle/setStoredInAscii 1
/run/particle/retrievePhysicsTable physTableAscii
/run/beamOn 10
/run/dumpRegion
/run/dumpCouples
#
#
#
/control/shell rm -rf physTableBinary physTableAscii
#
+32
View File
@@ -0,0 +1,32 @@
/control/verbose 2
/run/verbose 1
/run/dumpRegion
/run/beamOn 10
/run/dumpCouples
##
##
##
/run/setCutForRegion Calor-A 0.2 mm
/run/setCutForRegion Calor-B 2 mm
/run/setCutForRegion Calor-C 2 cm
/run/dumpRegion
/run/beamOn 10
/run/dumpCouples
##
##
##
/N07/setAbsMat Aluminium
/N07/setGapMat Water
/run/dumpRegion
/run/beamOn 10
/run/dumpCouples
##
##
##
/run/setCutForRegion Calor-A 0.01 mm
/run/setCutForRegion Calor-B 0.1 mm
/run/setCutForRegion Calor-C 1 mm
/run/dumpRegion
/run/beamOn 10
/run/dumpCouples
+31
View File
@@ -0,0 +1,31 @@
/control/verbose 2
/run/verbose 1
/run/dumpRegion
/run/beamOn 1000
/run/dumpCouples
##
##
##
/run/setCutForRegion Calor-A 0.2 mm
/run/setCutForRegion Calor-B 2 mm
/run/setCutForRegion Calor-C 2 cm
/run/dumpRegion
/run/beamOn 1000
/run/dumpCouples
##
##
##
/N07/setAbsMat Aluminium
/N07/setGapMat Water
/run/dumpRegion
/run/beamOn 1000
/run/dumpCouples
##
##
##
/run/setCutForRegion Calor-A 0.01 mm
/run/setCutForRegion Calor-B 0.1 mm
/run/setCutForRegion Calor-C 1 mm
/run/dumpRegion
/run/beamOn 1000
/run/dumpCouples
+888
View File
@@ -0,0 +1,888 @@
**********************************************
Geant4 version $Name: geant4-05-01 $
(30-Apr-2003)
Copyright : Geant4 Collaboration
**********************************************
***** Table : Nb of materials = 7 *****
Material: Aluminium density: 2.700 g/cm3 temperature: 273.15 K pressure: 1.00 atm RadLength: 8.893 cm
---> Element: Aluminium Z = 13.0 N = 27.0 A = 26.98 g/mole fractionMass: 100.00 % Abundance 100.00 %
Material: liquidArgon density: 1.390 g/cm3 temperature: 273.15 K pressure: 1.00 atm RadLength: 14.065 cm
---> Element: liquidArgon Z = 18.0 N = 40.0 A = 39.95 g/mole fractionMass: 100.00 % Abundance 100.00 %
Material: Lead density: 11.350 g/cm3 temperature: 273.15 K pressure: 1.00 atm RadLength: 5.612 mm
---> Element: Lead Z = 82.0 N = 207.2 A = 207.19 g/mole fractionMass: 100.00 % Abundance 100.00 %
Material: Water density: 1.000 g/cm3 temperature: 273.15 K pressure: 1.00 atm RadLength: 36.092 cm
---> Element: Hydrogen H Z = 1.0 N = 1.0 A = 1.01 g/mole fractionMass: 11.21 % Abundance 66.67 %
---> Element: Oxygen O Z = 8.0 N = 16.0 A = 16.00 g/mole fractionMass: 88.79 % Abundance 33.33 %
Material: Scintillator density: 1.032 g/cm3 temperature: 273.15 K pressure: 1.00 atm RadLength: 42.549 cm
---> Element: Carbon C Z = 6.0 N = 12.0 A = 12.01 g/mole fractionMass: 91.45 % Abundance 47.37 %
---> Element: Hydrogen H Z = 1.0 N = 1.0 A = 1.01 g/mole fractionMass: 8.55 % Abundance 52.63 %
Material: Air density: 1.290 mg/cm3 temperature: 273.15 K pressure: 1.00 atm RadLength: 285.161 m
---> Element: Nitrogen N Z = 7.0 N = 14.0 A = 14.01 g/mole fractionMass: 70.00 % Abundance 72.71 %
---> Element: Oxygen O Z = 8.0 N = 16.0 A = 16.00 g/mole fractionMass: 30.00 % Abundance 27.29 %
Material: Galactic density: 0.000 mg/cm3 temperature: 2.73 K pressure: 0.00 atm RadLength: 204727576.737 pc
---> Element: Galactic Z = 1.0 N = 1.0 A = 1.01 g/mole fractionMass: 100.00 % Abundance 100.00 %
Visualization Manager instantiating...
Visualization Manager initialising...
Registering graphics systems...
You have successfully chosen to use the following graphics systems.
Current available graphics systems are:
ASCIITree (ATree)
DAWNFILE (DAWNFILE)
GAGTree (GAGTree)
G4HepRepFile (HepRepFile)
G4HepRep (HepRepXML)
RayTracer (RayTracer)
VRML1FILE (VRML1FILE)
VRML2FILE (VRML2FILE)
--------------------------------------------------------
Calorimeters are placed in parallel.
Absorber is made of Lead
Gap is made of liquidArgon
--------------------------------------------------------
phot: Total cross sections from Sandia parametrisation.
ExN07PhysicsList::SetCuts: default cut length : 1 mm
/run/verbose 1
/run/dumpRegion
Region DefaultRegionForTheWorld
Materials : Galactic
Production cuts : gamma 1 mm e- 1 mm e+ 1 mm
Region Calor-A
Materials : Lead liquidArgon
Production cuts : gamma 1 mm e- 1 mm e+ 1 mm
Region Calor-B
Materials : Lead liquidArgon
Production cuts : gamma 1 cm e- 1 cm e+ 1 cm
Region Calor-C
Materials : Lead liquidArgon
Production cuts : gamma 10 cm e- 10 cm e+ 10 cm
/run/beamOn 10
conv: Total cross sections from a parametrisation. Good description from 1.5 MeV to 100 GeV for all Z.
e+e- energies according Bethe-Heitler
PhysicsTables from 1.022 MeV to 100 GeV in 100 bins.
compt: Total cross sections from a parametrisation. Good description from 10 KeV to (100/Z) GeV.
Scattered gamma energy according Klein-Nishina.
PhysicsTables from 1 keV to 100 GeV in 80 bins.
msc: Tables of transport mean free paths.
New model of MSC , computes the lateral
displacement of the particle , too.
PhysicsTables from 100 eV to 100 TeV in 100 bins.
eIoni: delta cross sections from Moller+Bhabha. Good description from 1 KeV to 100 GeV.
delta ray energy sampled from differential Xsection.
PhysicsTables from 1 keV to 100 TeV in 100 bins.
Step function: finalRange(mm)= 1, dRoverRange= 0.2
eBrem: Total cross sections from a NEW parametrisation based on the EEDL data library.
Good description from 1 KeV to 100 GeV.
log scale extrapolation above 100 GeV
Gamma energy sampled from a parametrised formula.
PhysicsTables from 1 keV to 100 TeV in 100 bins.
annihil: Total cross section from Heilter formula(annihilation into 2 photons).
gamma energies sampled according Heitler
PhysicsTables from 10 keV to 10 TeV in 100 bins.
hIoni: Knock-on electron cross sections .
Good description above the mean excitation energy.
delta ray energy sampled from differential Xsection.
PhysicsTables from 1 keV to 100 TeV in 100 bins.
Step function: finalRange(mm)= 1, dRoverRange= 0.2
msc: Tables of transport mean free paths.
New model of MSC , computes the lateral
displacement of the particle , too.
PhysicsTables from 100 eV to 100 TeV in 100 bins.
MuIoni: Knock-on electron cross sections .
Good description above the mean excitation energy.
delta ray energy sampled from differential Xsection.
PhysicsTables from 1 keV to 1000 PeV in 150 bins.
msc: Tables of transport mean free paths.
New model of MSC , computes the lateral
displacement of the particle , too.
PhysicsTables from 100 eV to 100 TeV in 100 bins.
MuBrems: theoretical cross section
Good description up to 1000 PeV.
PhysicsTables from 1 keV to 1000 PeV in 150 bins.
MuPairProd: theoretical cross sections
Good description up to 1000 PeV.
PhysicsTables from 1 keV to 1000 PeV in 150 bins.
Start Run processing.
Run terminated.
Run Summary
Number of events processed : 10
User=35.15s Real=41.55s Sys=6.38s
############################################################
Run Summary - Number of events : 10
############################################################
Region : Calor-A
Production thresholds :
gamma 1 mm e- 1 mm e+ 1 mm
Energy deposition in an event :
Absorber 3.60134 GeV Gap 444.182 MeV
Number of secondaries in an event :
gamma in Absorber 1459.7 in Gap 110
e- in Absorber 2367.8 in Gap 253.9
e+ in Absorber 129.3 in Gap 5.1
Minimum kinetic energy of generated secondaries :
gamma in Absorber 100.521 keV in Gap 6.25622 keV
e- in Absorber 28.55 eV in Gap 14.2794 eV
e+ in Absorber 0 eV in Gap 127.228 keV
Total track length of e+/e- in an event :
Absorber 1.55584 m Gap 89.8385 cm
Total number of steps of e+/e- in an event :
Absorber 4097.2 Gap 534.8
############################################################
Region : Calor-B
Production thresholds :
gamma 1 cm e- 1 cm e+ 1 cm
Energy deposition in an event :
Absorber 6.49014 GeV Gap 656.158 MeV
Number of secondaries in an event :
gamma in Absorber 2382.4 in Gap 161.2
e- in Absorber 4298.7 in Gap 387.7
e+ in Absorber 315.6 in Gap 12.6
Minimum kinetic energy of generated secondaries :
gamma in Absorber 263.012 keV in Gap 19.2337 keV
e- in Absorber 7.07129 eV in Gap 31.1182 eV
e+ in Absorber 0 eV in Gap 55.9103 keV
Total track length of e+/e- in an event :
Absorber 3.32678 m Gap 1.5705 m
Total number of steps of e+/e- in an event :
Absorber 7289.4 Gap 824
############################################################
Region : Calor-C
Production thresholds :
gamma 10 cm e- 10 cm e+ 10 cm
Energy deposition in an event :
Absorber 12.4793 GeV Gap 1.12349 GeV
Number of secondaries in an event :
gamma in Absorber 2695 in Gap 222
e- in Absorber 4855.8 in Gap 416.6
e+ in Absorber 735.1 in Gap 23.2
Minimum kinetic energy of generated secondaries :
gamma in Absorber 292.897 keV in Gap 56.6688 keV
e- in Absorber 3.61264 eV in Gap 17.459 eV
e+ in Absorber 4.07643 keV in Gap 176.903 keV
Total track length of e+/e- in an event :
Absorber 6.60459 m Gap 2.96588 m
Total number of steps of e+/e- in an event :
Absorber 9549.5 Gap 1173.3
############################################################
/run/dumpCouples
========= Table of registered couples ==============================
Index : 0 used in the geometry : Yes recalculation needed : No
Material : Galactic
Range cuts : gamma 1 mm e- 1 mm e+ 1 mm
Energy thresholds : gamma 990 eV e- 990 eV e+ 990 eV
Region(s) which use this couple :
DefaultRegionForTheWorld
Index : 1 used in the geometry : Yes recalculation needed : No
Material : Lead
Range cuts : gamma 1 mm e- 1 mm e+ 1 mm
Energy thresholds : gamma 100.511 keV e- 1.37814 MeV e+ 1.28002 MeV
Region(s) which use this couple :
Calor-A
Index : 2 used in the geometry : Yes recalculation needed : No
Material : liquidArgon
Range cuts : gamma 1 mm e- 1 mm e+ 1 mm
Energy thresholds : gamma 6.17835 keV e- 342.891 keV e+ 334.551 keV
Region(s) which use this couple :
Calor-A
Index : 3 used in the geometry : Yes recalculation needed : No
Material : Lead
Range cuts : gamma 1 cm e- 1 cm e+ 1 cm
Energy thresholds : gamma 282.478 keV e- 15.0137 MeV e+ 13.9447 MeV
Region(s) which use this couple :
Calor-B
Index : 4 used in the geometry : Yes recalculation needed : No
Material : liquidArgon
Range cuts : gamma 1 cm e- 1 cm e+ 1 cm
Energy thresholds : gamma 19.0521 keV e- 2.14666 MeV e+ 2.04351 MeV
Region(s) which use this couple :
Calor-B
Index : 5 used in the geometry : Yes recalculation needed : No
Material : Lead
Range cuts : gamma 10 cm e- 10 cm e+ 10 cm
Energy thresholds : gamma 2.24888 MeV e- 437.915 MeV e+ 406.735 MeV
Region(s) which use this couple :
Calor-C
Index : 6 used in the geometry : Yes recalculation needed : No
Material : liquidArgon
Range cuts : gamma 10 cm e- 10 cm e+ 10 cm
Energy thresholds : gamma 56.6382 keV e- 24.5664 MeV e+ 22.8173 MeV
Region(s) which use this couple :
Calor-C
====================================================================
##
##
##
/run/setCutForRegion Calor-A 0.2 mm
/run/setCutForRegion Calor-B 2 mm
/run/setCutForRegion Calor-C 2 cm
/run/dumpRegion
Region DefaultRegionForTheWorld
Materials : Galactic
Production cuts : gamma 1 mm e- 1 mm e+ 1 mm
Region Calor-A
Materials : Lead liquidArgon
Production cuts : gamma 200 mum e- 200 mum e+ 200 mum
Region Calor-B
Materials : Lead liquidArgon
Production cuts : gamma 2 mm e- 2 mm e+ 2 mm
Region Calor-C
Materials : Lead liquidArgon
Production cuts : gamma 2 cm e- 2 cm e+ 2 cm
/run/beamOn 10
conv: Total cross sections from a parametrisation. Good description from 1.5 MeV to 100 GeV for all Z.
e+e- energies according Bethe-Heitler
PhysicsTables from 1.022 MeV to 100 GeV in 100 bins.
compt: Total cross sections from a parametrisation. Good description from 10 KeV to (100/Z) GeV.
Scattered gamma energy according Klein-Nishina.
PhysicsTables from 1 keV to 100 GeV in 80 bins.
msc: Tables of transport mean free paths.
New model of MSC , computes the lateral
displacement of the particle , too.
PhysicsTables from 100 eV to 100 TeV in 100 bins.
eIoni: delta cross sections from Moller+Bhabha. Good description from 1 KeV to 100 GeV.
delta ray energy sampled from differential Xsection.
PhysicsTables from 1 keV to 100 TeV in 100 bins.
Step function: finalRange(mm)= 1, dRoverRange= 0.2
eBrem: Total cross sections from a NEW parametrisation based on the EEDL data library.
Good description from 1 KeV to 100 GeV.
log scale extrapolation above 100 GeV
Gamma energy sampled from a parametrised formula.
PhysicsTables from 1 keV to 100 TeV in 100 bins.
annihil: Total cross section from Heilter formula(annihilation into 2 photons).
gamma energies sampled according Heitler
PhysicsTables from 10 keV to 10 TeV in 100 bins.
hIoni: Knock-on electron cross sections .
Good description above the mean excitation energy.
delta ray energy sampled from differential Xsection.
PhysicsTables from 1 keV to 100 TeV in 100 bins.
Step function: finalRange(mm)= 1, dRoverRange= 0.2
msc: Tables of transport mean free paths.
New model of MSC , computes the lateral
displacement of the particle , too.
PhysicsTables from 100 eV to 100 TeV in 100 bins.
MuIoni: Knock-on electron cross sections .
Good description above the mean excitation energy.
delta ray energy sampled from differential Xsection.
PhysicsTables from 1 keV to 1000 PeV in 150 bins.
msc: Tables of transport mean free paths.
New model of MSC , computes the lateral
displacement of the particle , too.
PhysicsTables from 100 eV to 100 TeV in 100 bins.
MuBrems: theoretical cross section
Good description up to 1000 PeV.
PhysicsTables from 1 keV to 1000 PeV in 150 bins.
MuPairProd: theoretical cross sections
Good description up to 1000 PeV.
PhysicsTables from 1 keV to 1000 PeV in 150 bins.
Start Run processing.
Run terminated.
Run Summary
Number of events processed : 10
User=12.53s Real=15.52s Sys=2.42s
############################################################
Run Summary - Number of events : 10
############################################################
Region : Calor-A
Production thresholds :
gamma 200 mum e- 200 mum e+ 200 mum
Energy deposition in an event :
Absorber 2.70478 GeV Gap 333.612 MeV
Number of secondaries in an event :
gamma in Absorber 1091.5 in Gap 63.6
e- in Absorber 1840.3 in Gap 236
e+ in Absorber 71.8 in Gap 2
Minimum kinetic energy of generated secondaries :
gamma in Absorber 47.1916 keV in Gap 2.88577 keV
e- in Absorber 12.4087 eV in Gap 7.16025 eV
e+ in Absorber 1.96566 keV in Gap 398.398 keV
Total track length of e+/e- in an event :
Absorber 1.03338 m Gap 54.8953 cm
Total number of steps of e+/e- in an event :
Absorber 4138.7 Gap 622
############################################################
Region : Calor-B
Production thresholds :
gamma 2 mm e- 2 mm e+ 2 mm
Energy deposition in an event :
Absorber 2.37584 GeV Gap 303.942 MeV
Number of secondaries in an event :
gamma in Absorber 575.4 in Gap 44.4
e- in Absorber 978.3 in Gap 99.2
e+ in Absorber 50.9 in Gap 2.1
Minimum kinetic energy of generated secondaries :
gamma in Absorber 120.59 keV in Gap 8.59223 keV
e- in Absorber 131.324 eV in Gap 31.9861 eV
e+ in Absorber 0 eV in Gap 440.512 keV
Total track length of e+/e- in an event :
Absorber 66.9131 cm Gap 35.1969 cm
Total number of steps of e+/e- in an event :
Absorber 1668.8 Gap 213
############################################################
Region : Calor-C
Production thresholds :
gamma 2 cm e- 2 cm e+ 2 cm
Energy deposition in an event :
Absorber 2.65916 GeV Gap 439.237 MeV
Number of secondaries in an event :
gamma in Absorber 413 in Gap 73.9
e- in Absorber 805.3 in Gap 88
e+ in Absorber 66.3 in Gap 1.8
Minimum kinetic energy of generated secondaries :
gamma in Absorber 27.1274 keV in Gap 27.0413 keV
e- in Absorber 11.8986 eV in Gap 29.1025 eV
e+ in Absorber 0 eV in Gap 381.413 keV
Total track length of e+/e- in an event :
Absorber 1.78425 m Gap 1.0599 m
Total number of steps of e+/e- in an event :
Absorber 1693 Gap 377.7
############################################################
/run/dumpCouples
========= Table of registered couples ==============================
Index : 0 used in the geometry : Yes recalculation needed : No
Material : Galactic
Range cuts : gamma 1 mm e- 1 mm e+ 1 mm
Energy thresholds : gamma 990 eV e- 990 eV e+ 990 eV
Region(s) which use this couple :
DefaultRegionForTheWorld
Index : 1 used in the geometry : Yes recalculation needed : No
Material : Lead
Range cuts : gamma 200 mum e- 200 mum e+ 200 mum
Energy thresholds : gamma 47.1847 keV e- 383.065 keV e+ 364.659 keV
Region(s) which use this couple :
Calor-A
Index : 2 used in the geometry : Yes recalculation needed : No
Material : liquidArgon
Range cuts : gamma 200 mum e- 200 mum e+ 200 mum
Energy thresholds : gamma 2.78576 keV e- 123.426 keV e+ 121.916 keV
Region(s) which use this couple :
Calor-A
Index : 3 used in the geometry : Yes recalculation needed : No
Material : Lead
Range cuts : gamma 2 mm e- 2 mm e+ 2 mm
Energy thresholds : gamma 120.589 keV e- 2.614 MeV e+ 2.42788 MeV
Region(s) which use this couple :
Calor-B
Index : 4 used in the geometry : Yes recalculation needed : No
Material : liquidArgon
Range cuts : gamma 2 mm e- 2 mm e+ 2 mm
Energy thresholds : gamma 8.59044 keV e- 561.061 keV e+ 540.718 keV
Region(s) which use this couple :
Calor-B
Index : 5 used in the geometry : Yes recalculation needed : No
Material : Lead
Range cuts : gamma 2 cm e- 2 cm e+ 2 cm
Energy thresholds : gamma 419.689 keV e- 35.5413 MeV e+ 33.0107 MeV
Region(s) which use this couple :
Calor-C
Index : 6 used in the geometry : Yes recalculation needed : No
Material : liquidArgon
Range cuts : gamma 2 cm e- 2 cm e+ 2 cm
Energy thresholds : gamma 26.9798 keV e- 4.2772 MeV e+ 3.97266 MeV
Region(s) which use this couple :
Calor-C
====================================================================
##
##
##
/N07/setAbsMat Aluminium
/N07/setGapMat Water
/run/dumpRegion
Region DefaultRegionForTheWorld
Materials : Galactic
Production cuts : gamma 1 mm e- 1 mm e+ 1 mm
Region Calor-A
Materials : Aluminium Water
Production cuts : gamma 200 mum e- 200 mum e+ 200 mum
Region Calor-B
Materials : Aluminium Water
Production cuts : gamma 2 mm e- 2 mm e+ 2 mm
Region Calor-C
Materials : Aluminium Water
Production cuts : gamma 2 cm e- 2 cm e+ 2 cm
/run/beamOn 10
conv: Total cross sections from a parametrisation. Good description from 1.5 MeV to 100 GeV for all Z.
e+e- energies according Bethe-Heitler
PhysicsTables from 1.022 MeV to 100 GeV in 100 bins.
compt: Total cross sections from a parametrisation. Good description from 10 KeV to (100/Z) GeV.
Scattered gamma energy according Klein-Nishina.
PhysicsTables from 1 keV to 100 GeV in 80 bins.
msc: Tables of transport mean free paths.
New model of MSC , computes the lateral
displacement of the particle , too.
PhysicsTables from 100 eV to 100 TeV in 100 bins.
eIoni: delta cross sections from Moller+Bhabha. Good description from 1 KeV to 100 GeV.
delta ray energy sampled from differential Xsection.
PhysicsTables from 1 keV to 100 TeV in 100 bins.
Step function: finalRange(mm)= 1, dRoverRange= 0.2
eBrem: Total cross sections from a NEW parametrisation based on the EEDL data library.
Good description from 1 KeV to 100 GeV.
log scale extrapolation above 100 GeV
Gamma energy sampled from a parametrised formula.
PhysicsTables from 1 keV to 100 TeV in 100 bins.
annihil: Total cross section from Heilter formula(annihilation into 2 photons).
gamma energies sampled according Heitler
PhysicsTables from 10 keV to 10 TeV in 100 bins.
hIoni: Knock-on electron cross sections .
Good description above the mean excitation energy.
delta ray energy sampled from differential Xsection.
PhysicsTables from 1 keV to 100 TeV in 100 bins.
Step function: finalRange(mm)= 1, dRoverRange= 0.2
msc: Tables of transport mean free paths.
New model of MSC , computes the lateral
displacement of the particle , too.
PhysicsTables from 100 eV to 100 TeV in 100 bins.
MuIoni: Knock-on electron cross sections .
Good description above the mean excitation energy.
delta ray energy sampled from differential Xsection.
PhysicsTables from 1 keV to 1000 PeV in 150 bins.
msc: Tables of transport mean free paths.
New model of MSC , computes the lateral
displacement of the particle , too.
PhysicsTables from 100 eV to 100 TeV in 100 bins.
MuBrems: theoretical cross section
Good description up to 1000 PeV.
PhysicsTables from 1 keV to 1000 PeV in 150 bins.
MuPairProd: theoretical cross sections
Good description up to 1000 PeV.
PhysicsTables from 1 keV to 1000 PeV in 150 bins.
Start Run processing.
Run terminated.
Run Summary
Number of events processed : 10
User=2.57s Real=3.08s Sys=0.51s
############################################################
Run Summary - Number of events : 10
############################################################
Region : Calor-A
Production thresholds :
gamma 200 mum e- 200 mum e+ 200 mum
Energy deposition in an event :
Absorber 531.284 MeV Gap 239.865 MeV
Number of secondaries in an event :
gamma in Absorber 37.6 in Gap 13.5
e- in Absorber 254.2 in Gap 140.5
e+ in Absorber 0.5 in Gap 0.3
Minimum kinetic energy of generated secondaries :
gamma in Absorber 3.25082 keV in Gap 1.47108 keV
e- in Absorber 19.2739 eV in Gap 67.4704 eV
e+ in Absorber 2.17728 MeV in Gap 2.18579 MeV
Total track length of e+/e- in an event :
Absorber 34.0026 cm Gap 30.6256 cm
Total number of steps of e+/e- in an event :
Absorber 637.3 Gap 386
############################################################
Region : Calor-B
Production thresholds :
gamma 2 mm e- 2 mm e+ 2 mm
Energy deposition in an event :
Absorber 493.569 MeV Gap 226.681 MeV
Number of secondaries in an event :
gamma in Absorber 16.9 in Gap 7.9
e- in Absorber 97.5 in Gap 50.3
e+ in Absorber 0.1 in Gap 0.1
Minimum kinetic energy of generated secondaries :
gamma in Absorber 9.60652 keV in Gap 4.07734 keV
e- in Absorber 11.6723 eV in Gap 6.95819 eV
e+ in Absorber 630.551 keV in Gap 2.73929 MeV
Total track length of e+/e- in an event :
Absorber 18.6721 cm Gap 20.5657 cm
Total number of steps of e+/e- in an event :
Absorber 174.5 Gap 116.4
############################################################
Region : Calor-C
Production thresholds :
gamma 2 cm e- 2 cm e+ 2 cm
Energy deposition in an event :
Absorber 562.956 MeV Gap 251.881 MeV
Number of secondaries in an event :
gamma in Absorber 23.3 in Gap 8.3
e- in Absorber 153.6 in Gap 61.6
e+ in Absorber 0.8 in Gap 0.2
Minimum kinetic energy of generated secondaries :
gamma in Absorber 29.7255 keV in Gap 10.6468 keV
e- in Absorber 5.37776 eV in Gap 9.08076 eV
e+ in Absorber 2.17597 MeV in Gap 4.48753 MeV
Total track length of e+/e- in an event :
Absorber 23.971 cm Gap 25.0512 cm
Total number of steps of e+/e- in an event :
Absorber 221.9 Gap 109.5
############################################################
/run/dumpCouples
========= Table of registered couples ==============================
Index : 0 used in the geometry : Yes recalculation needed : No
Material : Galactic
Range cuts : gamma 1 mm e- 1 mm e+ 1 mm
Energy thresholds : gamma 990 eV e- 990 eV e+ 990 eV
Region(s) which use this couple :
DefaultRegionForTheWorld
Index : 1 used in the geometry : No recalculation needed : No
Material : Lead
Range cuts : gamma 200 mum e- 200 mum e+ 200 mum
Energy thresholds : gamma 47.1847 keV e- 383.065 keV e+ 364.659 keV
Index : 2 used in the geometry : No recalculation needed : No
Material : liquidArgon
Range cuts : gamma 200 mum e- 200 mum e+ 200 mum
Energy thresholds : gamma 2.78576 keV e- 123.426 keV e+ 121.916 keV
Index : 3 used in the geometry : No recalculation needed : No
Material : Lead
Range cuts : gamma 2 mm e- 2 mm e+ 2 mm
Energy thresholds : gamma 120.589 keV e- 2.614 MeV e+ 2.42788 MeV
Index : 4 used in the geometry : No recalculation needed : No
Material : liquidArgon
Range cuts : gamma 2 mm e- 2 mm e+ 2 mm
Energy thresholds : gamma 8.59044 keV e- 561.061 keV e+ 540.718 keV
Index : 5 used in the geometry : No recalculation needed : No
Material : Lead
Range cuts : gamma 2 cm e- 2 cm e+ 2 cm
Energy thresholds : gamma 419.689 keV e- 35.5413 MeV e+ 33.0107 MeV
Index : 6 used in the geometry : No recalculation needed : No
Material : liquidArgon
Range cuts : gamma 2 cm e- 2 cm e+ 2 cm
Energy thresholds : gamma 26.9798 keV e- 4.2772 MeV e+ 3.97266 MeV
Index : 7 used in the geometry : Yes recalculation needed : No
Material : Aluminium
Range cuts : gamma 200 mum e- 200 mum e+ 200 mum
Energy thresholds : gamma 3.2133 keV e- 199.488 keV e+ 194.636 keV
Region(s) which use this couple :
Calor-A
Index : 8 used in the geometry : Yes recalculation needed : No
Material : Water
Range cuts : gamma 200 mum e- 200 mum e+ 200 mum
Energy thresholds : gamma 1.47052 keV e- 126.503 keV e+ 124.955 keV
Region(s) which use this couple :
Calor-A
Index : 9 used in the geometry : Yes recalculation needed : No
Material : Aluminium
Range cuts : gamma 2 mm e- 2 mm e+ 2 mm
Energy thresholds : gamma 9.56197 keV e- 1.02561 MeV e+ 976.329 keV
Region(s) which use this couple :
Calor-B
Index : 10 used in the geometry : Yes recalculation needed : No
Material : Water
Range cuts : gamma 2 mm e- 2 mm e+ 2 mm
Energy thresholds : gamma 3.8945 keV e- 568.011 keV e+ 547.416 keV
Region(s) which use this couple :
Calor-B
Index : 11 used in the geometry : Yes recalculation needed : No
Material : Aluminium
Range cuts : gamma 2 cm e- 2 cm e+ 2 cm
Energy thresholds : gamma 28.1807 keV e- 9.40429 MeV e+ 8.7347 MeV
Region(s) which use this couple :
Calor-C
Index : 12 used in the geometry : Yes recalculation needed : No
Material : Water
Range cuts : gamma 2 cm e- 2 cm e+ 2 cm
Energy thresholds : gamma 10.3141 keV e- 4.17317 MeV e+ 3.97266 MeV
Region(s) which use this couple :
Calor-C
====================================================================
##
##
##
/run/setCutForRegion Calor-A 0.01 mm
/run/setCutForRegion Calor-B 0.1 mm
/run/setCutForRegion Calor-C 1 mm
/run/dumpRegion
Region DefaultRegionForTheWorld
Materials : Galactic
Production cuts : gamma 1 mm e- 1 mm e+ 1 mm
Region Calor-A
Materials : Aluminium Water
Production cuts : gamma 10 mum e- 10 mum e+ 10 mum
Region Calor-B
Materials : Aluminium Water
Production cuts : gamma 100 mum e- 100 mum e+ 100 mum
Region Calor-C
Materials : Aluminium Water
Production cuts : gamma 1 mm e- 1 mm e+ 1 mm
/run/beamOn 10
conv: Total cross sections from a parametrisation. Good description from 1.5 MeV to 100 GeV for all Z.
e+e- energies according Bethe-Heitler
PhysicsTables from 1.022 MeV to 100 GeV in 100 bins.
compt: Total cross sections from a parametrisation. Good description from 10 KeV to (100/Z) GeV.
Scattered gamma energy according Klein-Nishina.
PhysicsTables from 1 keV to 100 GeV in 80 bins.
msc: Tables of transport mean free paths.
New model of MSC , computes the lateral
displacement of the particle , too.
PhysicsTables from 100 eV to 100 TeV in 100 bins.
eIoni: delta cross sections from Moller+Bhabha. Good description from 1 KeV to 100 GeV.
delta ray energy sampled from differential Xsection.
PhysicsTables from 1 keV to 100 TeV in 100 bins.
Step function: finalRange(mm)= 1, dRoverRange= 0.2
eBrem: Total cross sections from a NEW parametrisation based on the EEDL data library.
Good description from 1 KeV to 100 GeV.
log scale extrapolation above 100 GeV
Gamma energy sampled from a parametrised formula.
PhysicsTables from 1 keV to 100 TeV in 100 bins.
annihil: Total cross section from Heilter formula(annihilation into 2 photons).
gamma energies sampled according Heitler
PhysicsTables from 10 keV to 10 TeV in 100 bins.
hIoni: Knock-on electron cross sections .
Good description above the mean excitation energy.
delta ray energy sampled from differential Xsection.
PhysicsTables from 1 keV to 100 TeV in 100 bins.
Step function: finalRange(mm)= 1, dRoverRange= 0.2
msc: Tables of transport mean free paths.
New model of MSC , computes the lateral
displacement of the particle , too.
PhysicsTables from 100 eV to 100 TeV in 100 bins.
MuIoni: Knock-on electron cross sections .
Good description above the mean excitation energy.
delta ray energy sampled from differential Xsection.
PhysicsTables from 1 keV to 1000 PeV in 150 bins.
msc: Tables of transport mean free paths.
New model of MSC , computes the lateral
displacement of the particle , too.
PhysicsTables from 100 eV to 100 TeV in 100 bins.
MuBrems: theoretical cross section
Good description up to 1000 PeV.
PhysicsTables from 1 keV to 1000 PeV in 150 bins.
MuPairProd: theoretical cross sections
Good description up to 1000 PeV.
PhysicsTables from 1 keV to 1000 PeV in 150 bins.
Start Run processing.
Run terminated.
Run Summary
Number of events processed : 10
User=14.26s Real=18.6s Sys=4.07s
############################################################
Run Summary - Number of events : 10
############################################################
Region : Calor-A
Production thresholds :
gamma 10 mum e- 10 mum e+ 10 mum
Energy deposition in an event :
Absorber 542.123 MeV Gap 236.354 MeV
Number of secondaries in an event :
gamma in Absorber 56.3 in Gap 13.4
e- in Absorber 975.6 in Gap 1913.4
e+ in Absorber 0.9 in Gap 0.1
Minimum kinetic energy of generated secondaries :
gamma in Absorber 1.00209 keV in Gap 1.01325 keV
e- in Absorber 13.2161 eV in Gap 17.4362 eV
e+ in Absorber 2.14097 MeV in Gap 33.0209 MeV
Total track length of e+/e- in an event :
Absorber 40.0207 cm Gap 33.0917 cm
Total number of steps of e+/e- in an event :
Absorber 4035.8 Gap 3871.8
############################################################
Region : Calor-B
Production thresholds :
gamma 100 mum e- 100 mum e+ 100 mum
Energy deposition in an event :
Absorber 689.59 MeV Gap 314.803 MeV
Number of secondaries in an event :
gamma in Absorber 91.7 in Gap 30.4
e- in Absorber 596.8 in Gap 287.6
e+ in Absorber 4 in Gap 0.7
Minimum kinetic energy of generated secondaries :
gamma in Absorber 1.29855 keV in Gap 1.09732 keV
e- in Absorber 4.88791 eV in Gap 2.6686 eV
e+ in Absorber 331.688 keV in Gap 1.88709 MeV
Total track length of e+/e- in an event :
Absorber 85.2136 cm Gap 77.9287 cm
Total number of steps of e+/e- in an event :
Absorber 1723.7 Gap 1006.2
############################################################
Region : Calor-C
Production thresholds :
gamma 1 mm e- 1 mm e+ 1 mm
Energy deposition in an event :
Absorber 616.293 MeV Gap 283.135 MeV
Number of secondaries in an event :
gamma in Absorber 55.7 in Gap 19.8
e- in Absorber 321.2 in Gap 150.3
e+ in Absorber 3 in Gap 0.6
Minimum kinetic energy of generated secondaries :
gamma in Absorber 3.19671 keV in Gap 2.94224 keV
e- in Absorber 3.36631 eV in Gap 16.6574 eV
e+ in Absorber 348.006 keV in Gap 2.59486 MeV
Total track length of e+/e- in an event :
Absorber 61.2776 cm Gap 55.9247 cm
Total number of steps of e+/e- in an event :
Absorber 537.5 Gap 301.2
############################################################
/run/dumpCouples
========= Table of registered couples ==============================
Index : 0 used in the geometry : Yes recalculation needed : No
Material : Galactic
Range cuts : gamma 1 mm e- 1 mm e+ 1 mm
Energy thresholds : gamma 990 eV e- 990 eV e+ 990 eV
Region(s) which use this couple :
DefaultRegionForTheWorld
Index : 1 used in the geometry : No recalculation needed : No
Material : Lead
Range cuts : gamma 10 mum e- 10 mum e+ 10 mum
Energy thresholds : gamma 5.97389 keV e- 57.5352 keV e+ 56.8313 keV
Index : 2 used in the geometry : No recalculation needed : No
Material : liquidArgon
Range cuts : gamma 10 mum e- 10 mum e+ 10 mum
Energy thresholds : gamma 990 eV e- 7.67874 keV e+ 7.58479 keV
Index : 3 used in the geometry : No recalculation needed : No
Material : Lead
Range cuts : gamma 100 mum e- 100 mum e+ 100 mum
Energy thresholds : gamma 29.3406 keV e- 239.945 keV e+ 231.245 keV
Index : 4 used in the geometry : No recalculation needed : No
Material : liquidArgon
Range cuts : gamma 100 mum e- 100 mum e+ 100 mum
Energy thresholds : gamma 1.9853 keV e- 82.2201 keV e+ 81.2141 keV
Index : 5 used in the geometry : No recalculation needed : No
Material : Lead
Range cuts : gamma 1 mm e- 1 mm e+ 1 mm
Energy thresholds : gamma 100.511 keV e- 1.37814 MeV e+ 1.28002 MeV
Index : 6 used in the geometry : No recalculation needed : No
Material : liquidArgon
Range cuts : gamma 1 mm e- 1 mm e+ 1 mm
Energy thresholds : gamma 6.17835 keV e- 342.891 keV e+ 334.551 keV
Index : 7 used in the geometry : Yes recalculation needed : No
Material : Aluminium
Range cuts : gamma 10 mum e- 10 mum e+ 10 mum
Energy thresholds : gamma 990 eV e- 33.8876 keV e+ 33.4729 keV
Region(s) which use this couple :
Calor-A
Index : 8 used in the geometry : Yes recalculation needed : No
Material : Water
Range cuts : gamma 10 mum e- 10 mum e+ 10 mum
Energy thresholds : gamma 990 eV e- 6.44974 keV e+ 6.37083 keV
Region(s) which use this couple :
Calor-A
Index : 9 used in the geometry : Yes recalculation needed : No
Material : Aluminium
Range cuts : gamma 100 mum e- 100 mum e+ 100 mum
Energy thresholds : gamma 2.31448 keV e- 129.656 keV e+ 128.07 keV
Region(s) which use this couple :
Calor-B
Index : 10 used in the geometry : Yes recalculation needed : No
Material : Water
Range cuts : gamma 100 mum e- 100 mum e+ 100 mum
Energy thresholds : gamma 1.09571 keV e- 84.2696 keV e+ 83.2385 keV
Region(s) which use this couple :
Calor-B
Index : 11 used in the geometry : Yes recalculation needed : No
Material : Aluminium
Range cuts : gamma 1 mm e- 1 mm e+ 1 mm
Energy thresholds : gamma 6.88731 keV e- 596.68 keV e+ 568.011 keV
Region(s) which use this couple :
Calor-C
Index : 12 used in the geometry : Yes recalculation needed : No
Material : Water
Range cuts : gamma 1 mm e- 1 mm e+ 1 mm
Energy thresholds : gamma 2.90186 keV e- 347.138 keV e+ 338.695 keV
Region(s) which use this couple :
Calor-C
====================================================================
Graphics systems deleted.
Visualization Manager deleting...
G4 kernel has come to Quit state.
@@ -0,0 +1,90 @@
//
// ********************************************************************
// * DISCLAIMER *
// * *
// * The following disclaimer summarizes all the specific disclaimers *
// * of contributors to this software. The specific disclaimers,which *
// * govern, are listed with their locations in: *
// * http://cern.ch/geant4/license *
// * *
// * Neither the authors of this software system, nor their employing *
// * institutes,nor the agencies providing financial support for this *
// * work make any representation or warranty, express or implied, *
// * regarding this software system or assume any liability for its *
// * use. *
// * *
// * This code implementation is the intellectual property of the *
// * GEANT4 collaboration. *
// * By copying, distributing or modifying the Program (or any work *
// * based on the Program) you indicate your acceptance of this *
// * statement, and all its terms. *
// ********************************************************************
//
//
// $Id: ExN07CalorHit.hh,v 1.1 2003/03/10 01:43:35 asaim Exp $
// GEANT4 tag $Name: geant4-05-01 $
//
#ifndef ExN07CalorHit_h
#define ExN07CalorHit_h 1
#include "G4VHit.hh"
#include "G4THitsCollection.hh"
#include "G4Allocator.hh"
class ExN07CalorHit : public G4VHit
{
public:
ExN07CalorHit();
virtual ~ExN07CalorHit();
ExN07CalorHit(const ExN07CalorHit&);
const ExN07CalorHit& operator=(const ExN07CalorHit&);
int operator==(const ExN07CalorHit&) const;
inline void* operator new(size_t);
inline void operator delete(void*);
virtual void Draw();
virtual void Print();
public:
inline void AddEnergy(G4double de)
{ Edep += de; }
inline void AddStep(G4double dl)
{
TrackLength += dl;
nStep++;
}
inline G4double GetEdep() const
{ return Edep; }
inline G4double GetTrak() const
{ return TrackLength; }
inline G4int GetNStep() const
{ return nStep; }
private:
G4double Edep;
G4double TrackLength;
G4int nStep;
};
typedef G4THitsCollection<ExN07CalorHit> ExN07CalorHitsCollection;
extern G4Allocator<ExN07CalorHit> ExN07CalorHitAllocator;
inline void* ExN07CalorHit::operator new(size_t)
{
void* aHit;
aHit = (void*) ExN07CalorHitAllocator.MallocSingle();
return aHit;
}
inline void ExN07CalorHit::operator delete(void* aHit)
{
ExN07CalorHitAllocator.FreeSingle((ExN07CalorHit*) aHit);
}
#endif
@@ -0,0 +1,64 @@
//
// ********************************************************************
// * DISCLAIMER *
// * *
// * The following disclaimer summarizes all the specific disclaimers *
// * of contributors to this software. The specific disclaimers,which *
// * govern, are listed with their locations in: *
// * http://cern.ch/geant4/license *
// * *
// * Neither the authors of this software system, nor their employing *
// * institutes,nor the agencies providing financial support for this *
// * work make any representation or warranty, express or implied, *
// * regarding this software system or assume any liability for its *
// * use. *
// * *
// * This code implementation is the intellectual property of the *
// * GEANT4 collaboration. *
// * By copying, distributing or modifying the Program (or any work *
// * based on the Program) you indicate your acceptance of this *
// * statement, and all its terms. *
// ********************************************************************
//
//
// $Id: ExN07CalorimeterSD.hh,v 1.1 2003/03/10 01:43:35 asaim Exp $
// GEANT4 tag $Name: geant4-05-01 $
//
#ifndef ExN07CalorimeterSD_h
#define ExN07CalorimeterSD_h 1
class G4HCofThisEvent;
class G4Step;
class G4TouchableHistory;
#include "G4VSensitiveDetector.hh"
#include "globals.hh"
#include "ExN07CalorHit.hh"
class ExN07CalorimeterSD : public G4VSensitiveDetector
{
public:
ExN07CalorimeterSD(G4String);
virtual ~ExN07CalorimeterSD();
virtual void Initialize(G4HCofThisEvent*);
virtual G4bool ProcessHits(G4Step*,G4TouchableHistory*);
virtual void EndOfEvent(G4HCofThisEvent*);
virtual void clear();
virtual void DrawAll();
virtual void PrintAll();
private:
static G4int numberOfLayers;
ExN07CalorHitsCollection* AbsCollection;
ExN07CalorHitsCollection* GapCollection;
G4int AbsCollID;
G4int GapCollID;
public:
static void SetNumberOfLayers(G4int nl)
{ numberOfLayers = nl; }
};
#endif
@@ -0,0 +1,94 @@
//
// ********************************************************************
// * DISCLAIMER *
// * *
// * The following disclaimer summarizes all the specific disclaimers *
// * of contributors to this software. The specific disclaimers,which *
// * govern, are listed with their locations in: *
// * http://cern.ch/geant4/license *
// * *
// * Neither the authors of this software system, nor their employing *
// * institutes,nor the agencies providing financial support for this *
// * work make any representation or warranty, express or implied, *
// * regarding this software system or assume any liability for its *
// * use. *
// * *
// * This code implementation is the intellectual property of the *
// * GEANT4 collaboration. *
// * By copying, distributing or modifying the Program (or any work *
// * based on the Program) you indicate your acceptance of this *
// * statement, and all its terms. *
// ********************************************************************
//
//
// $Id: ExN07DetectorConstruction.hh,v 1.1 2003/03/10 01:43:35 asaim Exp $
// GEANT4 tag $Name: geant4-05-01 $
//
//
#ifndef ExN07DetectorConstruction_h
#define ExN07DetectorConstruction_h 1
#include "G4VUserDetectorConstruction.hh"
#include "globals.hh"
class G4LogicalVolume;
class G4VPhysicalVolume;
class G4PVParameterised;
class G4Material;
class G4Box;
class ExN07GapParameterisation;
class ExN07DetectorMessenger;
class ExN07DetectorConstruction : public G4VUserDetectorConstruction
{
public:
ExN07DetectorConstruction();
virtual ~ExN07DetectorConstruction();
public:
virtual G4VPhysicalVolume* Construct();
public:
void UpdateGeometry();
void PrintCalorParameters() const;
void SetAbsorberMaterial(G4String materialChoice);
G4String GetAbsorberMaterial() const;
void SetGapMaterial(G4String materialChoice);
G4String GetGapMaterial() const;
void SetSerialGeometry(G4bool ser);
void SetNumberOfLayers(G4int nl);
inline G4int GetNumberOfLayers() const
{ return numberOfLayers; }
inline G4bool IsSerial() const
{ return serial; }
private:
void DefineMaterials();
private:
G4int numberOfLayers;
G4Material* worldMaterial;
G4Material* absorberMaterial;
G4Material* gapMaterial;
G4Box* gapSolid;
G4LogicalVolume* worldLogical;
G4LogicalVolume* calorLogical[3];
G4LogicalVolume* layerLogical[3];
G4VPhysicalVolume* worldPhysical;
G4VPhysicalVolume* calorPhysical[3];
G4PVParameterised* layerPhysical[3];
G4bool serial;
ExN07GapParameterisation* gapParam;
ExN07DetectorMessenger* detectorMessenger;
};
#endif
@@ -0,0 +1,62 @@
//
// ********************************************************************
// * DISCLAIMER *
// * *
// * The following disclaimer summarizes all the specific disclaimers *
// * of contributors to this software. The specific disclaimers,which *
// * govern, are listed with their locations in: *
// * http://cern.ch/geant4/license *
// * *
// * Neither the authors of this software system, nor their employing *
// * institutes,nor the agencies providing financial support for this *
// * work make any representation or warranty, express or implied, *
// * regarding this software system or assume any liability for its *
// * use. *
// * *
// * This code implementation is the intellectual property of the *
// * GEANT4 collaboration. *
// * By copying, distributing or modifying the Program (or any work *
// * based on the Program) you indicate your acceptance of this *
// * statement, and all its terms. *
// ********************************************************************
//
//
// $Id: ExN07DetectorMessenger.hh,v 1.2 2003/04/08 15:46:59 asaim Exp $
// GEANT4 tag $Name: geant4-05-01 $
//
#ifndef ExN07DetectorMessenger_h
#define ExN07DetectorMessenger_h 1
#include "globals.hh"
#include "G4UImessenger.hh"
class ExN07DetectorConstruction;
class G4UIdirectory;
class G4UIcmdWithAString;
class G4UIcmdWithABool;
class G4UIcmdWithAnInteger;
class ExN07DetectorMessenger: public G4UImessenger
{
public:
ExN07DetectorMessenger(ExN07DetectorConstruction* );
virtual ~ExN07DetectorMessenger();
virtual void SetNewValue(G4UIcommand*, G4String);
virtual G4String GetCurrentValue(G4UIcommand * command);
private:
ExN07DetectorConstruction* ExN07Detector;
G4UIdirectory* N07Dir;
G4UIcmdWithAString* AbsMaterCmd;
G4UIcmdWithAString* GapMaterCmd;
G4UIcmdWithAnInteger* numLayerCmd;
G4UIcmdWithABool* SerialCmd;
G4UIcmdWithAnInteger* verboseCmd;
};
#endif
@@ -0,0 +1,58 @@
//
// ********************************************************************
// * DISCLAIMER *
// * *
// * The following disclaimer summarizes all the specific disclaimers *
// * of contributors to this software. The specific disclaimers,which *
// * govern, are listed with their locations in: *
// * http://cern.ch/geant4/license *
// * *
// * Neither the authors of this software system, nor their employing *
// * institutes,nor the agencies providing financial support for this *
// * work make any representation or warranty, express or implied, *
// * regarding this software system or assume any liability for its *
// * use. *
// * *
// * This code implementation is the intellectual property of the *
// * GEANT4 collaboration. *
// * By copying, distributing or modifying the Program (or any work *
// * based on the Program) you indicate your acceptance of this *
// * statement, and all its terms. *
// ********************************************************************
//
//
// $Id: ExN07EventAction.hh,v 1.2 2003/04/08 15:47:00 asaim Exp $
// GEANT4 tag $Name: geant4-05-01 $
//
#ifndef ExN07EventAction_h
#define ExN07EventAction_h 1
#include "G4UserEventAction.hh"
#include "globals.hh"
class ExN07EventAction : public G4UserEventAction
{
public:
ExN07EventAction();
virtual ~ExN07EventAction();
public:
virtual void BeginOfEventAction(const G4Event*);
virtual void EndOfEventAction(const G4Event*);
private:
G4int calorimeterCollID[6];
static G4int verboseLevel;
public:
static void SetVerboseLevel(G4int i)
{ verboseLevel = i; }
static G4int GetVerboseLevel()
{ return verboseLevel; }
};
#endif
@@ -0,0 +1,70 @@
//
// ********************************************************************
// * DISCLAIMER *
// * *
// * The following disclaimer summarizes all the specific disclaimers *
// * of contributors to this software. The specific disclaimers,which *
// * govern, are listed with their locations in: *
// * http://cern.ch/geant4/license *
// * *
// * Neither the authors of this software system, nor their employing *
// * institutes,nor the agencies providing financial support for this *
// * work make any representation or warranty, express or implied, *
// * regarding this software system or assume any liability for its *
// * use. *
// * *
// * This code implementation is the intellectual property of the *
// * GEANT4 collaboration. *
// * By copying, distributing or modifying the Program (or any work *
// * based on the Program) you indicate your acceptance of this *
// * statement, and all its terms. *
// ********************************************************************
//
//
// $Id: ExN07GapParameterisation.hh,v 1.1 2003/03/10 01:43:35 asaim Exp $
// GEANT4 tag $Name: geant4-05-01 $
//
//
// A parameterisation that describes a series of boxes along Z
// The boxes have equal size.
//
#ifndef ExN07GapParameterisation_H
#define ExN07GapParameterisation_H 1
#include "globals.hh"
#include "G4VPVParameterisation.hh"
class G4VPhysicalVolume;
class G4Material;
class ExN07GapParameterisation : public G4VPVParameterisation
{
public:
ExN07GapParameterisation();
virtual ~ExN07GapParameterisation();
virtual void ComputeTransformation(const G4int copyNo,
G4VPhysicalVolume* physVol) const;
virtual G4Material* ComputeMaterial(const G4int copyNo,
G4VPhysicalVolume* physVol);
private:
G4int numberOfLayers;
G4Material* absMaterial;
G4Material* gapMaterial;
public:
inline void SetNumberOfLayers(G4int nl)
{ numberOfLayers = nl; }
inline void SetAbsorberMaterial(G4Material* mat)
{ absMaterial = mat; }
inline void SetGapMaterial(G4Material* mat)
{ gapMaterial = mat; }
};
#endif
@@ -0,0 +1,64 @@
//
// ********************************************************************
// * DISCLAIMER *
// * *
// * The following disclaimer summarizes all the specific disclaimers *
// * of contributors to this software. The specific disclaimers,which *
// * govern, are listed with their locations in: *
// * http://cern.ch/geant4/license *
// * *
// * Neither the authors of this software system, nor their employing *
// * institutes,nor the agencies providing financial support for this *
// * work make any representation or warranty, express or implied, *
// * regarding this software system or assume any liability for its *
// * use. *
// * *
// * This code implementation is the intellectual property of the *
// * GEANT4 collaboration. *
// * By copying, distributing or modifying the Program (or any work *
// * based on the Program) you indicate your acceptance of this *
// * statement, and all its terms. *
// ********************************************************************
//
//
// $Id: ExN07PhysicsList.hh,v 1.1 2003/03/10 01:43:35 asaim Exp $
// GEANT4 tag $Name: geant4-05-01 $
//
#ifndef ExN07PhysicsList_h
#define ExN07PhysicsList_h 1
#include "G4VUserPhysicsList.hh"
#include "globals.hh"
class ExN07PhysicsList: public G4VUserPhysicsList
{
public:
ExN07PhysicsList();
~ExN07PhysicsList();
protected:
// Construct particle and physics
void ConstructParticle();
void ConstructProcess();
void SetCuts();
protected:
// these methods Construct particles
void ConstructBosons();
void ConstructLeptons();
void ConstructMesons();
void ConstructBaryons();
protected:
// these methods Construct physics processes and register them
void ConstructGeneral();
void ConstructEM();
};
#endif
@@ -0,0 +1,58 @@
//
// ********************************************************************
// * DISCLAIMER *
// * *
// * The following disclaimer summarizes all the specific disclaimers *
// * of contributors to this software. The specific disclaimers,which *
// * govern, are listed with their locations in: *
// * http://cern.ch/geant4/license *
// * *
// * Neither the authors of this software system, nor their employing *
// * institutes,nor the agencies providing financial support for this *
// * work make any representation or warranty, express or implied, *
// * regarding this software system or assume any liability for its *
// * use. *
// * *
// * This code implementation is the intellectual property of the *
// * GEANT4 collaboration. *
// * By copying, distributing or modifying the Program (or any work *
// * based on the Program) you indicate your acceptance of this *
// * statement, and all its terms. *
// ********************************************************************
//
//
// $Id: ExN07PrimaryGeneratorAction.hh,v 1.1 2003/03/10 01:43:36 asaim Exp $
// GEANT4 tag $Name: geant4-05-01 $
//
#ifndef ExN07PrimaryGeneratorAction_h
#define ExN07PrimaryGeneratorAction_h 1
#include "G4VUserPrimaryGeneratorAction.hh"
#include "globals.hh"
class G4ParticleGun;
class G4Event;
class ExN07PrimaryGeneratorAction : public G4VUserPrimaryGeneratorAction
{
public:
ExN07PrimaryGeneratorAction();
virtual ~ExN07PrimaryGeneratorAction();
public:
virtual void GeneratePrimaries(G4Event*);
private:
G4ParticleGun* particleGun;
G4bool serial;
public:
inline void SetSerial(G4bool ser)
{ serial = ser; }
};
#endif
+97
View File
@@ -0,0 +1,97 @@
//
// ********************************************************************
// * DISCLAIMER *
// * *
// * The following disclaimer summarizes all the specific disclaimers *
// * of contributors to this software. The specific disclaimers,which *
// * govern, are listed with their locations in: *
// * http://cern.ch/geant4/license *
// * *
// * Neither the authors of this software system, nor their employing *
// * institutes,nor the agencies providing financial support for this *
// * work make any representation or warranty, express or implied, *
// * regarding this software system or assume any liability for its *
// * use. *
// * *
// * This code implementation is the intellectual property of the *
// * GEANT4 collaboration. *
// * By copying, distributing or modifying the Program (or any work *
// * based on the Program) you indicate your acceptance of this *
// * statement, and all its terms. *
// ********************************************************************
//
//
// $Id: ExN07Run.hh,v 1.3 2003/04/09 23:20:58 asaim Exp $
// GEANT4 tag $Name: geant4-05-01 $
//
#ifndef ExN07Run_h
#define ExN07Run_h 1
#include "globals.hh"
#include "G4Run.hh"
#include "G4Allocator.hh"
class G4Event;
class G4HCtable;
class G4DCtable;
class ExN07Run : public G4Run
{
public:
ExN07Run();
virtual ~ExN07Run();
inline void *operator new(size_t);
inline void operator delete(void* aRun);
public:
virtual void RecordEvent(const G4Event*);
private:
G4double totE[6];
G4double totL[6];
G4int nStep[6];
G4int nGamma[6];
G4int nElectron[6];
G4int nPositron[6];
G4double eMinGamma[6];
G4double eMinElectron[6];
G4double eMinPositron[6];
public:
inline G4double GetTotalE(G4int i) const
{ return totE[i]; }
inline G4double GetTotalL(G4int i) const
{ return totL[i]; }
inline G4int GetNStep(G4int i) const
{ return nStep[i]; }
inline G4int GetNGamma(G4int i) const
{ return nGamma[i]; }
inline G4int GetNElectron(G4int i) const
{ return nElectron[i]; }
inline G4int GetNPositron(G4int i) const
{ return nPositron[i]; }
inline G4double GetEMinGamma(G4int i) const
{ return eMinGamma[i]; }
inline G4double GetEMinElectron(G4int i) const
{ return eMinElectron[i]; }
inline G4double GetEMinPositron(G4int i) const
{ return eMinPositron[i]; }
};
extern G4Allocator<ExN07Run> anExN07RunAllocator;
inline void* ExN07Run::operator new(size_t)
{
void* aRun;
aRun = (void*)anExN07RunAllocator.MallocSingle();
return aRun;
}
inline void ExN07Run::operator delete(void* aRun)
{
anExN07RunAllocator.FreeSingle((ExN07Run*)aRun);
}
#endif
@@ -0,0 +1,48 @@
//
// ********************************************************************
// * DISCLAIMER *
// * *
// * The following disclaimer summarizes all the specific disclaimers *
// * of contributors to this software. The specific disclaimers,which *
// * govern, are listed with their locations in: *
// * http://cern.ch/geant4/license *
// * *
// * Neither the authors of this software system, nor their employing *
// * institutes,nor the agencies providing financial support for this *
// * work make any representation or warranty, express or implied, *
// * regarding this software system or assume any liability for its *
// * use. *
// * *
// * This code implementation is the intellectual property of the *
// * GEANT4 collaboration. *
// * By copying, distributing or modifying the Program (or any work *
// * based on the Program) you indicate your acceptance of this *
// * statement, and all its terms. *
// ********************************************************************
//
//
// $Id: ExN07RunAction.hh,v 1.1 2003/03/10 01:43:36 asaim Exp $
// GEANT4 tag $Name: geant4-05-01 $
//
#ifndef ExN07RunAction_h
#define ExN07RunAction_h 1
#include "G4UserRunAction.hh"
#include "globals.hh"
class G4Run;
class ExN07RunAction : public G4UserRunAction
{
public:
ExN07RunAction();
~ExN07RunAction();
public:
G4Run* GenerateRun();
void EndOfRunAction(const G4Run*);
};
#endif
@@ -0,0 +1,60 @@
//
// ********************************************************************
// * DISCLAIMER *
// * *
// * The following disclaimer summarizes all the specific disclaimers *
// * of contributors to this software. The specific disclaimers,which *
// * govern, are listed with their locations in: *
// * http://cern.ch/geant4/license *
// * *
// * Neither the authors of this software system, nor their employing *
// * institutes,nor the agencies providing financial support for this *
// * work make any representation or warranty, express or implied, *
// * regarding this software system or assume any liability for its *
// * use. *
// * *
// * This code implementation is the intellectual property of the *
// * GEANT4 collaboration. *
// * By copying, distributing or modifying the Program (or any work *
// * based on the Program) you indicate your acceptance of this *
// * statement, and all its terms. *
// ********************************************************************
//
#ifndef ExN07StackingAction_H
#define ExN07StackingAction_H 1
#include "globals.hh"
#include "G4UserStackingAction.hh"
class G4Track;
class ExN07StackingAction : public G4UserStackingAction
{
public:
ExN07StackingAction();
virtual ~ExN07StackingAction();
public:
virtual G4ClassificationOfNewTrack ClassifyNewTrack(const G4Track* aTrack);
virtual void PrepareNewEvent();
private:
static G4int nGamma[6];
static G4int nElectron[6];
static G4int nPositron[6];
static G4double eMinGamma[6];
static G4double eMinElectron[6];
static G4double eMinPositron[6];
public:
static G4int GetNGamma(G4int i) { return nGamma[i]; }
static G4int GetNElectron(G4int i) { return nElectron[i]; }
static G4int GetNPositron(G4int i) { return nPositron[i]; }
static G4double GetEMinGamma(G4int i) { return eMinGamma[i]; }
static G4double GetEMinElectron(G4int i) { return eMinElectron[i]; }
static G4double GetEMinPositron(G4int i) { return eMinPositron[i]; }
};
#endif
@@ -0,0 +1,51 @@
//
// ********************************************************************
// * DISCLAIMER *
// * *
// * The following disclaimer summarizes all the specific disclaimers *
// * of contributors to this software. The specific disclaimers,which *
// * govern, are listed with their locations in: *
// * http://cern.ch/geant4/license *
// * *
// * Neither the authors of this software system, nor their employing *
// * institutes,nor the agencies providing financial support for this *
// * work make any representation or warranty, express or implied, *
// * regarding this software system or assume any liability for its *
// * use. *
// * *
// * This code implementation is the intellectual property of the *
// * GEANT4 collaboration. *
// * By copying, distributing or modifying the Program (or any work *
// * based on the Program) you indicate your acceptance of this *
// * statement, and all its terms. *
// ********************************************************************
//
//
// $Id: ExN07VisManager.hh,v 1.1 2003/03/10 01:43:36 asaim Exp $
// GEANT4 tag $Name: geant4-05-01 $
//
//
#ifndef ExN07VisManager_h
#define ExN07VisManager_h 1
#ifdef G4VIS_USE
#include "G4VisManager.hh"
class ExN07VisManager: public G4VisManager {
public:
ExN07VisManager ();
private:
void RegisterGraphicsSystems ();
};
#endif
#endif
+22
View File
@@ -0,0 +1,22 @@
/control/verbose 2
/run/setCutForRegion Calor-A 0.2 mm
/run/setCutForRegion Calor-B 2 mm
/run/setCutForRegion Calor-C 2 cm
### retrieve physics table
### set store format : 0 binary 1 ascii
/run/particle/setStoredInAscii 0
#/run/particle/verbose 3
/run/particle/retrievePhysicsTable physTable
### dump couples
#/tracking/verbose 1
/run/particle/verbose 1
/run/beamOn 1
/run/dumpRegion
/run/dumpCouples
### 10 events
/tracking/verbose 0
/run/beamOn 10
+14
View File
@@ -0,0 +1,14 @@
/control/verbose 2
/N07/verbose 1
/run/dumpRegion
/run/beamOn 50
#
#
/N07/numberOfLayers 4
/run/dumpRegion
/run/beamOn 50
#
#
/N07/setGapMat Water
/run/dumpRegion
/run/beamOn 50
+64
View File
@@ -0,0 +1,64 @@
//
// ********************************************************************
// * DISCLAIMER *
// * *
// * The following disclaimer summarizes all the specific disclaimers *
// * of contributors to this software. The specific disclaimers,which *
// * govern, are listed with their locations in: *
// * http://cern.ch/geant4/license *
// * *
// * Neither the authors of this software system, nor their employing *
// * institutes,nor the agencies providing financial support for this *
// * work make any representation or warranty, express or implied, *
// * regarding this software system or assume any liability for its *
// * use. *
// * *
// * This code implementation is the intellectual property of the *
// * GEANT4 collaboration. *
// * By copying, distributing or modifying the Program (or any work *
// * based on the Program) you indicate your acceptance of this *
// * statement, and all its terms. *
// ********************************************************************
//
//
// $Id: ExN07CalorHit.cc,v 1.1 2003/03/10 01:43:36 asaim Exp $
// GEANT4 tag $Name: geant4-05-01 $
//
#include "ExN07CalorHit.hh"
G4Allocator<ExN07CalorHit> ExN07CalorHitAllocator;
ExN07CalorHit::ExN07CalorHit()
:Edep(0.),TrackLength(0.),nStep(0)
{;}
ExN07CalorHit::~ExN07CalorHit()
{;}
ExN07CalorHit::ExN07CalorHit(const ExN07CalorHit& right)
{
Edep = right.Edep;
TrackLength = right.TrackLength;
nStep= right.nStep;
}
const ExN07CalorHit& ExN07CalorHit::operator=(const ExN07CalorHit& right)
{
Edep = right.Edep;
TrackLength = right.TrackLength;
nStep= right.nStep;
return *this;
}
int ExN07CalorHit::operator==(const ExN07CalorHit& right) const
{
return 0;
}
void ExN07CalorHit::Draw()
{;}
void ExN07CalorHit::Print()
{;}
@@ -0,0 +1,115 @@
//
// ********************************************************************
// * DISCLAIMER *
// * *
// * The following disclaimer summarizes all the specific disclaimers *
// * of contributors to this software. The specific disclaimers,which *
// * govern, are listed with their locations in: *
// * http://cern.ch/geant4/license *
// * *
// * Neither the authors of this software system, nor their employing *
// * institutes,nor the agencies providing financial support for this *
// * work make any representation or warranty, express or implied, *
// * regarding this software system or assume any liability for its *
// * use. *
// * *
// * This code implementation is the intellectual property of the *
// * GEANT4 collaboration. *
// * By copying, distributing or modifying the Program (or any work *
// * based on the Program) you indicate your acceptance of this *
// * statement, and all its terms. *
// ********************************************************************
//
//
// $Id: ExN07CalorimeterSD.cc,v 1.1 2003/03/10 01:43:36 asaim Exp $
// GEANT4 tag $Name: geant4-05-01 $
//
#include "ExN07CalorimeterSD.hh"
#include "G4VPhysicalVolume.hh"
#include "G4Step.hh"
#include "G4VTouchable.hh"
#include "G4TouchableHistory.hh"
#include "G4SDManager.hh"
#include "G4ParticleDefinition.hh"
#include "G4Electron.hh"
#include "G4Positron.hh"
#include "G4Track.hh"
#include "G4ios.hh"
G4int ExN07CalorimeterSD::numberOfLayers = 40;
ExN07CalorimeterSD::ExN07CalorimeterSD(G4String name)
:G4VSensitiveDetector(name),AbsCollID(-1),GapCollID(-1)
{
collectionName.insert("AbsCollection");
collectionName.insert("GapCollection");
}
ExN07CalorimeterSD::~ExN07CalorimeterSD()
{;}
void ExN07CalorimeterSD::Initialize(G4HCofThisEvent*HCE)
{
AbsCollection = new ExN07CalorHitsCollection
(SensitiveDetectorName,collectionName[0]);
for(int i=0;i<numberOfLayers;i++)
{ AbsCollection->insert(new ExN07CalorHit); }
if(AbsCollID<0)
{ AbsCollID = GetCollectionID(0); }
HCE->AddHitsCollection(AbsCollID,AbsCollection);
GapCollection = new ExN07CalorHitsCollection
(SensitiveDetectorName,collectionName[1]);
for(int j=0;j<numberOfLayers;j++)
{ GapCollection->insert(new ExN07CalorHit); }
if(GapCollID<0)
{ GapCollID = GetCollectionID(1); }
HCE->AddHitsCollection(GapCollID,GapCollection);
}
G4bool ExN07CalorimeterSD::ProcessHits(G4Step* aStep,G4TouchableHistory* ROhist)
{
G4double edep = aStep->GetTotalEnergyDeposit();
G4double stepl = aStep->GetStepLength();
G4ParticleDefinition* particle = aStep->GetTrack()->GetDefinition();
G4TouchableHistory* theTouchable
= (G4TouchableHistory*)(aStep->GetPreStepPoint()->GetTouchable());
G4int LayerNumber = theTouchable->GetReplicaNumber();
G4int copyNo = LayerNumber/2;
if(LayerNumber%2)
{ // odd number corresponds to Gap
(*GapCollection)[copyNo]->AddEnergy(edep);
if(particle==G4Electron::ElectronDefinition()
|| particle==G4Positron::PositronDefinition())
(*GapCollection)[copyNo]->AddStep(stepl);
}
else
{ // even number corresponds to Abs
(*AbsCollection)[copyNo]->AddEnergy(edep);
if(particle==G4Electron::ElectronDefinition()
|| particle==G4Positron::PositronDefinition())
(*AbsCollection)[copyNo]->AddStep(stepl);
}
return true;
}
void ExN07CalorimeterSD::EndOfEvent(G4HCofThisEvent* HCE)
{;}
void ExN07CalorimeterSD::clear()
{;}
void ExN07CalorimeterSD::DrawAll()
{;}
void ExN07CalorimeterSD::PrintAll()
{;}
@@ -0,0 +1,332 @@
//
// ********************************************************************
// * DISCLAIMER *
// * *
// * The following disclaimer summarizes all the specific disclaimers *
// * of contributors to this software. The specific disclaimers,which *
// * govern, are listed with their locations in: *
// * http://cern.ch/geant4/license *
// * *
// * Neither the authors of this software system, nor their employing *
// * institutes,nor the agencies providing financial support for this *
// * work make any representation or warranty, express or implied, *
// * regarding this software system or assume any liability for its *
// * use. *
// * *
// * This code implementation is the intellectual property of the *
// * GEANT4 collaboration. *
// * By copying, distributing or modifying the Program (or any work *
// * based on the Program) you indicate your acceptance of this *
// * statement, and all its terms. *
// ********************************************************************
//
//
// $Id: ExN07DetectorConstruction.cc,v 1.3 2003/04/08 15:47:00 asaim Exp $
// GEANT4 tag $Name: geant4-05-01 $
//
//
#include "ExN07DetectorConstruction.hh"
#include "G4RunManager.hh"
#include "G4Material.hh"
#include "G4Box.hh"
#include "G4LogicalVolume.hh"
#include "G4PVPlacement.hh"
#include "G4PVParameterised.hh"
#include "G4SDManager.hh"
#include "G4VisAttributes.hh"
#include "G4Colour.hh"
#include "G4ios.hh"
#include "ExN07DetectorMessenger.hh"
#include "ExN07CalorimeterSD.hh"
#include "ExN07GapParameterisation.hh"
#include "ExN07PrimaryGeneratorAction.hh"
ExN07DetectorConstruction::ExN07DetectorConstruction()
:numberOfLayers(40),worldMaterial(0),absorberMaterial(0),gapMaterial(0),
gapSolid(0),worldLogical(0),worldPhysical(0),serial(false)
{
for(size_t i=0;i<3;i++)
{
calorLogical[i] = 0;
layerLogical[i] = 0;
calorPhysical[i] = 0;
layerPhysical[i] = 0;
}
gapParam = new ExN07GapParameterisation;
gapParam->SetNumberOfLayers(numberOfLayers);
ExN07CalorimeterSD::SetNumberOfLayers(numberOfLayers);
DefineMaterials();
detectorMessenger = new ExN07DetectorMessenger(this);
}
ExN07DetectorConstruction::~ExN07DetectorConstruction()
{ delete detectorMessenger;}
void ExN07DetectorConstruction::DefineMaterials()
{
G4String name, symbol; //a=mass of a mole;
G4double a, z, density; //z=mean number of protons;
G4int iz, n; //iz=number of protons in an isotope;
// n=number of nucleons in an isotope;
G4int ncomponents, natoms;
G4double abundance, fractionmass;
G4double temperature, pressure;
//
// define Elements
//
a = 1.01*g/mole;
G4Element* H = new G4Element(name="Hydrogen",symbol="H" , z= 1., a);
a = 12.01*g/mole;
G4Element* C = new G4Element(name="Carbon" ,symbol="C" , z= 6., a);
a = 14.01*g/mole;
G4Element* N = new G4Element(name="Nitrogen",symbol="N" , z= 7., a);
a = 16.00*g/mole;
G4Element* O = new G4Element(name="Oxygen" ,symbol="O" , z= 8., a);
//
// define an Element from isotopes, by relative abundance
//
G4Isotope* U5 = new G4Isotope(name="U235", iz=92, n=235, a=235.01*g/mole);
G4Isotope* U8 = new G4Isotope(name="U238", iz=92, n=238, a=238.03*g/mole);
G4Element* U = new G4Element(name="enriched Uranium",symbol="U",ncomponents=2);
U->AddIsotope(U5, abundance= 90.*perCent);
U->AddIsotope(U8, abundance= 10.*perCent);
//
// define simple materials
//
new G4Material(name="Aluminium", z=13., a=26.98*g/mole, density=2.700*g/cm3);
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);
//
// define a material from elements. case 1: chemical molecule
//
density = 1.000*g/cm3;
G4Material* H2O = new G4Material(name="Water", density, ncomponents=2);
H2O->AddElement(H, natoms=2);
H2O->AddElement(O, natoms=1);
density = 1.032*g/cm3;
G4Material* Sci = new G4Material(name="Scintillator", density, ncomponents=2);
Sci->AddElement(C, natoms=9);
Sci->AddElement(H, natoms=10);
//
// define a material from elements. case 2: mixture by fractional mass
//
density = 1.290*mg/cm3;
G4Material* Air = new G4Material(name="Air" , density, ncomponents=2);
Air->AddElement(N, fractionmass=0.7);
Air->AddElement(O, fractionmass=0.3);
//
// examples of vacuum
//
density = universe_mean_density;
pressure = 3.e-18*pascal;
temperature = 2.73*kelvin;
G4Material* Vacuum = new G4Material(name="Galactic", z=1., a=1.01*g/mole,
density,kStateGas,temperature,pressure);
G4cout << *(G4Material::GetMaterialTable()) << G4endl;
//default materials of the calorimeter
worldMaterial = Vacuum;
absorberMaterial = Pb;
gapMaterial = lAr;
gapParam->SetAbsorberMaterial(absorberMaterial);
gapParam->SetGapMaterial(gapMaterial);
}
G4VPhysicalVolume* ExN07DetectorConstruction::Construct()
{
//
// World
//
G4VSolid* worldSolid = new G4Box("World",2.*m,2.*m,4.*m);
worldLogical = new G4LogicalVolume(worldSolid,worldMaterial,"World");
worldPhysical = new G4PVPlacement(0,G4ThreeVector(),worldLogical,"World",
0,false,0);
//
// Calorimeter
//
G4VSolid* calorSolid = new G4Box("Calor",0.5*m,0.5*m,1.*m);
G4int i;
G4String calNam[3] = {"Cal-A","Cal-B","Cal-C"};
for(i=0;i<3;i++)
{
calorLogical[i] = new G4LogicalVolume(calorSolid,absorberMaterial,calNam[i]);
if(serial)
{
calorPhysical[i] = new G4PVPlacement(0,
G4ThreeVector(0.,0.,G4double(i-1)*2.*m),
calorLogical[i],calNam[i],worldLogical,false,i);
}
else
{
calorPhysical[i] = new G4PVPlacement(0,
G4ThreeVector(0.,G4double(i-1)*m,0.),
calorLogical[i],calNam[i],worldLogical,false,i);
}
}
//
// Layers -- material is parameterised
//
gapSolid = new G4Box("Gap",0.5*m,0.5*m,1.*m/G4double(2*numberOfLayers));
for(i=0;i<3;i++)
{
layerLogical[i] = new G4LogicalVolume(gapSolid,absorberMaterial,"Layer");
layerPhysical[i] =
new G4PVParameterised("Layer",layerLogical[i],calorLogical[i],kZAxis,
2*numberOfLayers,gapParam);
}
//
// Regions
//
G4String regName[] = {"Calor-A","Calor-B","Calor-C"};
for(i=0;i<3;i++)
{
G4Region* aRegion = new G4Region(regName[i]);
calorLogical[i]->SetRegion(aRegion);
aRegion->AddRootLogicalVolume(calorLogical[i]);
}
//
// Sensitive Detectors: Absorber and Gap
//
G4SDManager* SDman = G4SDManager::GetSDMpointer();
G4String detName[] = {"CalorSD-A","CalorSD-B","CalorSD-C"};
for(i=0;i<3;i++)
{
G4VSensitiveDetector* calorSD = new ExN07CalorimeterSD(detName[i]);
SDman->AddNewDetector(calorSD);
layerLogical[i]->SetSensitiveDetector(calorSD);
}
//
// Visualization attributes
//
worldLogical->SetVisAttributes(G4VisAttributes::Invisible);
G4VisAttributes* simpleBoxVisAtt= new G4VisAttributes(G4Colour(1.0,1.0,1.0));
simpleBoxVisAtt->SetVisibility(true);
for(i=0;i<3;i++)
{
calorLogical[i]->SetVisAttributes(simpleBoxVisAtt);
layerLogical[i]->SetVisAttributes(simpleBoxVisAtt);
}
PrintCalorParameters();
return worldPhysical;
}
void ExN07DetectorConstruction::PrintCalorParameters() const
{
G4cout << "--------------------------------------------------------" << G4endl;
if(serial)
{ G4cout << " Calorimeters are placed in serial." << G4endl; }
else
{ G4cout << " Calorimeters are placed in parallel." << G4endl; }
G4cout << " Absorber is made of " << absorberMaterial->GetName() << G4endl;
G4cout << " Gap is made of " << gapMaterial->GetName() << G4endl;
G4cout << "--------------------------------------------------------" << G4endl;
}
void ExN07DetectorConstruction::SetAbsorberMaterial(G4String materialChoice)
{
// search the material by its name
G4Material* pttoMaterial = G4Material::GetMaterial(materialChoice);
if(pttoMaterial)
{
absorberMaterial = pttoMaterial;
gapParam->SetAbsorberMaterial(pttoMaterial);
for(size_t i=0;i<3;i++)
{
calorLogical[i]->SetMaterial(absorberMaterial);
layerLogical[i]->SetMaterial(absorberMaterial);
}
}
else
{ G4cerr << materialChoice << " is not defined. - Command is ignored." << G4endl; }
}
G4String ExN07DetectorConstruction::GetAbsorberMaterial() const
{ return absorberMaterial->GetName(); }
void ExN07DetectorConstruction::SetGapMaterial(G4String materialChoice)
{
// search the material by its name
G4Material* pttoMaterial = G4Material::GetMaterial(materialChoice);
if(pttoMaterial)
{
gapMaterial = pttoMaterial;
gapParam->SetGapMaterial(pttoMaterial);
}
else
{ G4cerr << materialChoice << " is not defined. - Command is ignored." << G4endl; }
}
G4String ExN07DetectorConstruction::GetGapMaterial() const
{ return gapMaterial->GetName(); }
void ExN07DetectorConstruction::SetSerialGeometry(G4bool ser)
{
if(serial==ser) return;
serial=ser;
for(G4int i=0;i<3;i++)
{
if(serial)
{ calorPhysical[i]->SetTranslation(G4ThreeVector(0.,0.,G4double(i-1)*2.*m)); }
else
{ calorPhysical[i]->SetTranslation(G4ThreeVector(0.,G4double(i-1)*m,0.)); }
}
ExN07PrimaryGeneratorAction* gen = (ExN07PrimaryGeneratorAction*)
G4RunManager::GetRunManager()->GetUserPrimaryGeneratorAction();
gen->SetSerial(serial);
G4RunManager::GetRunManager()->GeometryHasBeenModified();
}
void ExN07DetectorConstruction::SetNumberOfLayers(G4int nl)
{
numberOfLayers = nl;
gapSolid->SetZHalfLength(1.*m/G4double(2*numberOfLayers));
gapParam->SetNumberOfLayers(nl);
for(size_t i=0;i<3;i++)
{
if(layerPhysical[i])
{
calorLogical[i]->RemoveDaughter(layerPhysical[i]);
delete layerPhysical[i];
}
layerPhysical[i] =
new G4PVParameterised("Layer",layerLogical[i],calorLogical[i],kZAxis,
2*numberOfLayers,gapParam);
}
ExN07CalorimeterSD::SetNumberOfLayers(nl);
G4RunManager::GetRunManager()->GeometryHasBeenModified();
}
@@ -0,0 +1,123 @@
//
// ********************************************************************
// * DISCLAIMER *
// * *
// * The following disclaimer summarizes all the specific disclaimers *
// * of contributors to this software. The specific disclaimers,which *
// * govern, are listed with their locations in: *
// * http://cern.ch/geant4/license *
// * *
// * Neither the authors of this software system, nor their employing *
// * institutes,nor the agencies providing financial support for this *
// * work make any representation or warranty, express or implied, *
// * regarding this software system or assume any liability for its *
// * use. *
// * *
// * This code implementation is the intellectual property of the *
// * GEANT4 collaboration. *
// * By copying, distributing or modifying the Program (or any work *
// * based on the Program) you indicate your acceptance of this *
// * statement, and all its terms. *
// ********************************************************************
//
//
// $Id: ExN07DetectorMessenger.cc,v 1.2 2003/04/08 15:47:00 asaim Exp $
// GEANT4 tag $Name: geant4-05-01 $
//
#include "ExN07DetectorMessenger.hh"
#include "ExN07DetectorConstruction.hh"
#include "ExN07EventAction.hh"
#include "G4UIdirectory.hh"
#include "G4UIcmdWithAString.hh"
#include "G4UIcmdWithABool.hh"
#include "G4UIcmdWithAnInteger.hh"
#include "G4Material.hh"
ExN07DetectorMessenger::ExN07DetectorMessenger(
ExN07DetectorConstruction* ExN07Det)
:ExN07Detector(ExN07Det)
{
N07Dir = new G4UIdirectory("/N07/");
N07Dir->SetGuidance("UI commands of this example");
G4String matList;
const G4MaterialTable* matTbl = G4Material::GetMaterialTable();
for(size_t i=0;i<G4Material::GetNumberOfMaterials();i++)
{
matList += (*matTbl)[i]->GetName();
matList += " ";
}
AbsMaterCmd = new G4UIcmdWithAString("/N07/setAbsMat",this);
AbsMaterCmd->SetGuidance("Select Material of the Absorber.");
AbsMaterCmd->SetParameterName("choice",false);
AbsMaterCmd->AvailableForStates(G4State_Idle);
AbsMaterCmd->SetCandidates(matList);
GapMaterCmd = new G4UIcmdWithAString("/N07/setGapMat",this);
GapMaterCmd->SetGuidance("Select Material of the Gap.");
GapMaterCmd->SetParameterName("choice",false);
GapMaterCmd->AvailableForStates(G4State_Idle);
GapMaterCmd->SetCandidates(matList);
numLayerCmd = new G4UIcmdWithAnInteger("/N07/numberOfLayers",this);
numLayerCmd->SetGuidance("Set number of layers.");
numLayerCmd->SetParameterName("nl",false);
numLayerCmd->AvailableForStates(G4State_Idle);
numLayerCmd->SetRange("nl>0");
SerialCmd = new G4UIcmdWithABool("/N07/serialGeometry",this);
SerialCmd->SetGuidance("Select calorimeters to be placed in serial or parallel.");
SerialCmd->SetParameterName("serialize",false);
SerialCmd->AvailableForStates(G4State_Idle);
verboseCmd = new G4UIcmdWithAnInteger("/N07/verbose", this);
verboseCmd->SetGuidance("Set verbosity of each event.");
verboseCmd->SetParameterName("vl",true,true);
verboseCmd->SetRange("vl>=0 && vl<10");
}
ExN07DetectorMessenger::~ExN07DetectorMessenger()
{
delete AbsMaterCmd;
delete GapMaterCmd;
delete numLayerCmd;
delete SerialCmd;
delete verboseCmd;
delete N07Dir;
}
void ExN07DetectorMessenger::SetNewValue(G4UIcommand* command,G4String newValue)
{
if( command == AbsMaterCmd )
{ ExN07Detector->SetAbsorberMaterial(newValue);}
else if( command == GapMaterCmd )
{ ExN07Detector->SetGapMaterial(newValue);}
else if( command == numLayerCmd )
{ ExN07Detector->SetNumberOfLayers(numLayerCmd->GetNewIntValue(newValue));}
else if( command == SerialCmd )
{ ExN07Detector->SetSerialGeometry(SerialCmd->GetNewBoolValue(newValue));}
else if( command == verboseCmd )
{ ExN07EventAction::SetVerboseLevel(verboseCmd->GetNewIntValue(newValue));}
}
G4String ExN07DetectorMessenger::GetCurrentValue(G4UIcommand * command)
{
G4String ans;
if( command == AbsMaterCmd )
{ ans=ExN07Detector->GetAbsorberMaterial(); }
else if( command == GapMaterCmd )
{ ans=ExN07Detector->GetGapMaterial(); }
else if( command == numLayerCmd )
{ ans=numLayerCmd->ConvertToString(ExN07Detector->GetNumberOfLayers()); }
else if( command == SerialCmd )
{ ans=SerialCmd->ConvertToString(ExN07Detector->IsSerial()); }
else if( command == verboseCmd )
{ ans=verboseCmd->ConvertToString(ExN07EventAction::GetVerboseLevel()); }
return ans;
}
+149
View File
@@ -0,0 +1,149 @@
//
// ********************************************************************
// * DISCLAIMER *
// * *
// * The following disclaimer summarizes all the specific disclaimers *
// * of contributors to this software. The specific disclaimers,which *
// * govern, are listed with their locations in: *
// * http://cern.ch/geant4/license *
// * *
// * Neither the authors of this software system, nor their employing *
// * institutes,nor the agencies providing financial support for this *
// * work make any representation or warranty, express or implied, *
// * regarding this software system or assume any liability for its *
// * use. *
// * *
// * This code implementation is the intellectual property of the *
// * GEANT4 collaboration. *
// * By copying, distributing or modifying the Program (or any work *
// * based on the Program) you indicate your acceptance of this *
// * statement, and all its terms. *
// ********************************************************************
//
//
// $Id: ExN07EventAction.cc,v 1.3 2003/04/08 15:47:01 asaim Exp $
// GEANT4 tag $Name: geant4-05-01 $
//
#include "ExN07EventAction.hh"
#include "ExN07CalorHit.hh"
#include "ExN07StackingAction.hh"
#include "G4Event.hh"
#include "G4EventManager.hh"
#include "G4HCofThisEvent.hh"
#include "G4VHitsCollection.hh"
#include "G4TrajectoryContainer.hh"
#include "G4Trajectory.hh"
#include "G4VVisManager.hh"
#include "G4SDManager.hh"
#include "G4UImanager.hh"
#include "G4ios.hh"
#include "G4UnitsTable.hh"
G4int ExN07EventAction::verboseLevel=0;
ExN07EventAction::ExN07EventAction()
{
for(size_t i=0;i<6;i++)
{ calorimeterCollID[i] = -1; }
}
ExN07EventAction::~ExN07EventAction()
{;}
void ExN07EventAction::BeginOfEventAction(const G4Event* evt)
{
for(size_t i=0;i<6;i++)
{
if(calorimeterCollID[i]==-1)
{
G4String colName;
switch(i)
{
case 0:
colName = "CalorSD-A/AbsCollection"; break;
case 1:
colName = "CalorSD-A/GapCollection"; break;
case 2:
colName = "CalorSD-B/AbsCollection"; break;
case 3:
colName = "CalorSD-B/GapCollection"; break;
case 4:
colName = "CalorSD-C/AbsCollection"; break;
case 5:
colName = "CalorSD-C/GapCollection"; break;
}
calorimeterCollID[i] =
G4SDManager::GetSDMpointer()->GetCollectionID(colName);
}
}
}
void ExN07EventAction::EndOfEventAction(const G4Event* evt)
{
if(verboseLevel==0) return;
if(evt->GetEventID()>4 && (evt->GetEventID())%10>(verboseLevel-1)) return;
G4HCofThisEvent* HCE = evt->GetHCofThisEvent();
if(!HCE) return;
G4cout << G4endl << "Event : " << evt->GetEventID() << G4endl;
ExN07CalorHitsCollection* CHC = 0;
for(size_t i=0;i<6;i++)
{
G4double totE=0.;
G4double totL=0.;
G4int nStep=0;
if (HCE) CHC = (ExN07CalorHitsCollection*)(HCE->GetHC(calorimeterCollID[i]));
if (CHC)
{
G4int nHit = CHC->entries();
for (G4int ii=0;ii<nHit;ii++)
{
totE += (*CHC)[ii]->GetEdep();
totL += (*CHC)[ii]->GetTrak();
nStep += (*CHC)[ii]->GetNStep();
}
}
switch(i)
{
case 0:
G4cout << "Calor-A : Absorber" << G4endl; break;
case 1:
G4cout << "Calor-A : SensitiveGap" << G4endl; break;
case 2:
G4cout << "Calor-B : Absorber" << G4endl; break;
case 3:
G4cout << "Calor-B : SensitiveGap" << G4endl; break;
case 4:
G4cout << "Calor-C : Absorber" << G4endl; break;
case 5:
G4cout << "Calor-C : SensitiveGap" << G4endl; break;
}
G4cout
<< " total energy deposition : " << G4std::setw(7)
<< G4BestUnit(totE,"Energy") << G4endl;
G4cout
<< " number of particles generated :" << G4endl
<< " gamma " << ExN07StackingAction::GetNGamma(i)
<< " e- " << ExN07StackingAction::GetNElectron(i)
<< " e+ " << ExN07StackingAction::GetNPositron(i) << G4endl;
G4cout
<< " minimum kinetic energy of generated secondaries :" << G4endl << G4std::setw(7)
<< " gamma " << G4BestUnit(ExN07StackingAction::GetEMinGamma(i),"Energy")
<< " e- " << G4BestUnit(ExN07StackingAction::GetEMinElectron(i),"Energy")
<< " e+ " << G4BestUnit(ExN07StackingAction::GetEMinPositron(i),"Energy")
<< G4endl;
G4cout
<< " total track length of e+/e- : " << G4std::setw(7)
<< G4BestUnit(totL,"Length") << G4endl;
G4cout
<< " number of steps of e+/e- : " << nStep
<< G4endl;
}
}
@@ -0,0 +1,61 @@
//
// ********************************************************************
// * DISCLAIMER *
// * *
// * The following disclaimer summarizes all the specific disclaimers *
// * of contributors to this software. The specific disclaimers,which *
// * govern, are listed with their locations in: *
// * http://cern.ch/geant4/license *
// * *
// * Neither the authors of this software system, nor their employing *
// * institutes,nor the agencies providing financial support for this *
// * work make any representation or warranty, express or implied, *
// * regarding this software system or assume any liability for its *
// * use. *
// * *
// * This code implementation is the intellectual property of the *
// * GEANT4 collaboration. *
// * By copying, distributing or modifying the Program (or any work *
// * based on the Program) you indicate your acceptance of this *
// * statement, and all its terms. *
// ********************************************************************
//
//
// $Id: ExN07GapParameterisation.cc,v 1.1 2003/03/10 01:43:36 asaim Exp $
// GEANT4 tag $Name: geant4-05-01 $
//
#include "ExN07GapParameterisation.hh"
#include "G4VPhysicalVolume.hh"
#include "G4ThreeVector.hh"
#include "G4Material.hh"
ExN07GapParameterisation::ExN07GapParameterisation()
:numberOfLayers(40),absMaterial(0),gapMaterial(0)
{;}
ExN07GapParameterisation::~ExN07GapParameterisation()
{;}
void ExN07GapParameterisation::ComputeTransformation
(const G4int copyNo, G4VPhysicalVolume* physVol) const
{
G4double halfZ = 1.*m/G4double(2*numberOfLayers);
G4double Zposition= G4double(copyNo)*2.*halfZ - (1.*m-halfZ);
G4ThreeVector origin(0,0,Zposition);
physVol->SetTranslation(origin);
physVol->SetRotation(0);
if(copyNo%2==0)
{ physVol->SetName("Abs"); }
else
{ physVol->SetName("Gap"); }
}
G4Material* ExN07GapParameterisation::ComputeMaterial
(const G4int copyNo,G4VPhysicalVolume* physVol)
{
if(copyNo%2==0) { return absMaterial; }
return gapMaterial;
}
+286
View File
@@ -0,0 +1,286 @@
//
// ********************************************************************
// * DISCLAIMER *
// * *
// * The following disclaimer summarizes all the specific disclaimers *
// * of contributors to this software. The specific disclaimers,which *
// * govern, are listed with their locations in: *
// * http://cern.ch/geant4/license *
// * *
// * Neither the authors of this software system, nor their employing *
// * institutes,nor the agencies providing financial support for this *
// * work make any representation or warranty, express or implied, *
// * regarding this software system or assume any liability for its *
// * use. *
// * *
// * This code implementation is the intellectual property of the *
// * GEANT4 collaboration. *
// * By copying, distributing or modifying the Program (or any work *
// * based on the Program) you indicate your acceptance of this *
// * statement, and all its terms. *
// ********************************************************************
//
//
// $Id: ExN07PhysicsList.cc,v 1.2 2003/04/09 23:20:59 asaim Exp $
// GEANT4 tag $Name: geant4-05-01 $
//
#include "ExN07PhysicsList.hh"
#include "G4ParticleDefinition.hh"
#include "G4ParticleWithCuts.hh"
#include "G4ProcessManager.hh"
#include "G4ProcessVector.hh"
#include "G4ParticleTypes.hh"
#include "G4ParticleTable.hh"
#include "G4ios.hh"
ExN07PhysicsList::ExN07PhysicsList(): G4VUserPhysicsList()
{
defaultCutValue = 1.0*mm;
SetVerboseLevel(1);
}
ExN07PhysicsList::~ExN07PhysicsList()
{}
void ExN07PhysicsList::ConstructParticle()
{
// In this method, static member functions should be called
// for all particles which you want to use.
// This ensures that objects of these particle types will be
// created in the program.
ConstructBosons();
ConstructLeptons();
ConstructMesons();
ConstructBaryons();
}
void ExN07PhysicsList::ConstructBosons()
{
// pseudo-particles
G4Geantino::GeantinoDefinition();
G4ChargedGeantino::ChargedGeantinoDefinition();
// gamma
G4Gamma::GammaDefinition();
}
void ExN07PhysicsList::ConstructLeptons()
{
// leptons
G4Electron::ElectronDefinition();
G4Positron::PositronDefinition();
G4MuonPlus::MuonPlusDefinition();
G4MuonMinus::MuonMinusDefinition();
G4NeutrinoE::NeutrinoEDefinition();
G4AntiNeutrinoE::AntiNeutrinoEDefinition();
G4NeutrinoMu::NeutrinoMuDefinition();
G4AntiNeutrinoMu::AntiNeutrinoMuDefinition();
}
void ExN07PhysicsList::ConstructMesons()
{
// mesons
G4PionPlus::PionPlusDefinition();
G4PionMinus::PionMinusDefinition();
G4PionZero::PionZeroDefinition();
G4Eta::EtaDefinition();
G4EtaPrime::EtaPrimeDefinition();
G4KaonPlus::KaonPlusDefinition();
G4KaonMinus::KaonMinusDefinition();
G4KaonZero::KaonZeroDefinition();
G4AntiKaonZero::AntiKaonZeroDefinition();
G4KaonZeroLong::KaonZeroLongDefinition();
G4KaonZeroShort::KaonZeroShortDefinition();
}
void ExN07PhysicsList::ConstructBaryons()
{
// barions
G4Proton::ProtonDefinition();
G4AntiProton::AntiProtonDefinition();
G4Neutron::NeutronDefinition();
G4AntiNeutron::AntiNeutronDefinition();
}
void ExN07PhysicsList::ConstructProcess()
{
AddTransportation();
ConstructEM();
ConstructGeneral();
}
#include "G4ComptonScattering.hh"
#include "G4GammaConversion.hh"
#include "G4PhotoElectricEffect.hh"
#include "G4MultipleScattering.hh"
#include "G4eIonisation.hh"
#include "G4eBremsstrahlung.hh"
#include "G4eplusAnnihilation.hh"
#include "G4MuIonisation.hh"
#include "G4MuBremsstrahlung.hh"
#include "G4MuPairProduction.hh"
#include "G4hIonisation.hh"
void ExN07PhysicsList::ConstructEM()
{
theParticleIterator->reset();
while( (*theParticleIterator)() ){
G4ParticleDefinition* particle = theParticleIterator->value();
G4ProcessManager* pmanager = particle->GetProcessManager();
G4String particleName = particle->GetParticleName();
if (particleName == "gamma") {
// gamma
pmanager->AddDiscreteProcess(new G4GammaConversion());
pmanager->AddDiscreteProcess(new G4ComptonScattering());
pmanager->AddDiscreteProcess(new G4PhotoElectricEffect());
} else if (particleName == "e-") {
//electron
G4VProcess* theeminusMultipleScattering = new G4MultipleScattering();
G4VProcess* theeminusIonisation = new G4eIonisation();
G4VProcess* theeminusBremsstrahlung = new G4eBremsstrahlung();
//
// add processes
pmanager->AddProcess(theeminusMultipleScattering);
pmanager->AddProcess(theeminusIonisation);
pmanager->AddProcess(theeminusBremsstrahlung);
//
// set ordering for AlongStepDoIt
pmanager->SetProcessOrdering(theeminusMultipleScattering, idxAlongStep,1);
pmanager->SetProcessOrdering(theeminusIonisation, idxAlongStep,2);
//
// set ordering for PostStepDoIt
pmanager->SetProcessOrdering(theeminusMultipleScattering, idxPostStep,1);
pmanager->SetProcessOrdering(theeminusIonisation, idxPostStep,2);
pmanager->SetProcessOrdering(theeminusBremsstrahlung, idxPostStep,3);
} else if (particleName == "e+") {
//positron
G4VProcess* theeplusMultipleScattering = new G4MultipleScattering();
G4VProcess* theeplusIonisation = new G4eIonisation();
G4VProcess* theeplusBremsstrahlung = new G4eBremsstrahlung();
G4VProcess* theeplusAnnihilation = new G4eplusAnnihilation();
//
// add processes
pmanager->AddProcess(theeplusMultipleScattering);
pmanager->AddProcess(theeplusIonisation);
pmanager->AddProcess(theeplusBremsstrahlung);
pmanager->AddProcess(theeplusAnnihilation);
//
// set ordering for AtRestDoIt
pmanager->SetProcessOrderingToFirst(theeplusAnnihilation, idxAtRest);
//
// set ordering for AlongStepDoIt
pmanager->SetProcessOrdering(theeplusMultipleScattering, idxAlongStep,1);
pmanager->SetProcessOrdering(theeplusIonisation, idxAlongStep,2);
//
// set ordering for PostStepDoIt
pmanager->SetProcessOrdering(theeplusMultipleScattering, idxPostStep,1);
pmanager->SetProcessOrdering(theeplusIonisation, idxPostStep,2);
pmanager->SetProcessOrdering(theeplusBremsstrahlung, idxPostStep,3);
pmanager->SetProcessOrdering(theeplusAnnihilation, idxPostStep,4);
} else if( particleName == "mu+" ||
particleName == "mu-" ) {
//muon
G4VProcess* aMultipleScattering = new G4MultipleScattering();
G4VProcess* aBremsstrahlung = new G4MuBremsstrahlung();
G4VProcess* aPairProduction = new G4MuPairProduction();
G4VProcess* anIonisation = new G4MuIonisation();
//
// add processes
pmanager->AddProcess(anIonisation);
pmanager->AddProcess(aMultipleScattering);
pmanager->AddProcess(aBremsstrahlung);
pmanager->AddProcess(aPairProduction);
//
// set ordering for AlongStepDoIt
pmanager->SetProcessOrdering(aMultipleScattering, idxAlongStep,1);
pmanager->SetProcessOrdering(anIonisation, idxAlongStep,2);
//
// set ordering for PostStepDoIt
pmanager->SetProcessOrdering(aMultipleScattering, idxPostStep,1);
pmanager->SetProcessOrdering(anIonisation, idxPostStep,2);
pmanager->SetProcessOrdering(aBremsstrahlung, idxPostStep,3);
pmanager->SetProcessOrdering(aPairProduction, idxPostStep,4);
} else if ((!particle->IsShortLived()) &&
(particle->GetPDGCharge() != 0.0) &&
(particle->GetParticleName() != "chargedgeantino")) {
// all others charged particles except geantino
G4VProcess* aMultipleScattering = new G4MultipleScattering();
G4VProcess* anIonisation = new G4hIonisation();
//
// add processes
pmanager->AddProcess(anIonisation);
pmanager->AddProcess(aMultipleScattering);
//
// set ordering for AlongStepDoIt
pmanager->SetProcessOrdering(aMultipleScattering, idxAlongStep,1);
pmanager->SetProcessOrdering(anIonisation, idxAlongStep,2);
//
// set ordering for PostStepDoIt
pmanager->SetProcessOrdering(aMultipleScattering, idxPostStep,1);
pmanager->SetProcessOrdering(anIonisation, idxPostStep,2);
}
}
}
#include "G4Decay.hh"
void ExN07PhysicsList::ConstructGeneral()
{
// Add Decay Process
G4Decay* theDecayProcess = new G4Decay();
theParticleIterator->reset();
while( (*theParticleIterator)() ){
G4ParticleDefinition* particle = theParticleIterator->value();
G4ProcessManager* pmanager = particle->GetProcessManager();
if (theDecayProcess->IsApplicable(*particle)) {
pmanager ->AddProcess(theDecayProcess);
// set ordering for PostStepDoIt and AtRestDoIt
pmanager ->SetProcessOrdering(theDecayProcess, idxPostStep);
pmanager ->SetProcessOrdering(theDecayProcess, idxAtRest);
}
}
}
#include "G4Region.hh"
#include "G4RegionStore.hh"
#include "G4ProductionCuts.hh"
void ExN07PhysicsList::SetCuts()
{
if (verboseLevel >0){
G4cout << "ExN07PhysicsList::SetCuts: default cut length : "
<< G4BestUnit(defaultCutValue,"Length") << G4endl;
}
// These values are used as the default production thresholds
// for the world volume.
SetCutsWithDefault();
// Production thresholds for detector regions
G4String regName[] = {"Calor-A","Calor-B","Calor-C"};
G4double fuc = 1.;
for(G4int i=0;i<3;i++)
{
G4Region* reg = G4RegionStore::GetInstance()->GetRegion(regName[i]);
G4ProductionCuts* cuts = new G4ProductionCuts;
cuts->SetProductionCut(defaultCutValue*fuc);
reg->SetProductionCuts(cuts);
fuc *= 10.;
}
}
@@ -0,0 +1,72 @@
//
// ********************************************************************
// * DISCLAIMER *
// * *
// * The following disclaimer summarizes all the specific disclaimers *
// * of contributors to this software. The specific disclaimers,which *
// * govern, are listed with their locations in: *
// * http://cern.ch/geant4/license *
// * *
// * Neither the authors of this software system, nor their employing *
// * institutes,nor the agencies providing financial support for this *
// * work make any representation or warranty, express or implied, *
// * regarding this software system or assume any liability for its *
// * use. *
// * *
// * This code implementation is the intellectual property of the *
// * GEANT4 collaboration. *
// * By copying, distributing or modifying the Program (or any work *
// * based on the Program) you indicate your acceptance of this *
// * statement, and all its terms. *
// ********************************************************************
//
//
// $Id: ExN07PrimaryGeneratorAction.cc,v 1.1 2003/03/10 01:43:36 asaim Exp $
// GEANT4 tag $Name: geant4-05-01 $
//
#include "ExN07PrimaryGeneratorAction.hh"
#include "G4Event.hh"
#include "G4ParticleGun.hh"
#include "G4ParticleTable.hh"
#include "G4ParticleDefinition.hh"
ExN07PrimaryGeneratorAction::ExN07PrimaryGeneratorAction()
:serial(false)
{
G4int n_particle = 1;
particleGun = new G4ParticleGun(n_particle);
// default particle kinematic
G4ParticleTable* particleTable = G4ParticleTable::GetParticleTable();
G4String particleName;
G4ParticleDefinition* particle
= particleTable->FindParticle(particleName="mu-");
particleGun->SetParticleDefinition(particle);
particleGun->SetParticleMomentumDirection(G4ThreeVector(0.,0.,1.));
particleGun->SetParticleEnergy(100.*GeV);
}
ExN07PrimaryGeneratorAction::~ExN07PrimaryGeneratorAction()
{
delete particleGun;
}
void ExN07PrimaryGeneratorAction::GeneratePrimaries(G4Event* anEvent)
{
if(serial)
{
particleGun->SetParticlePosition(G4ThreeVector(0.,0.,-3.5*m));
particleGun->GeneratePrimaryVertex(anEvent);
}
else
{
for(G4int i=0;i<3;i++)
{
particleGun->SetParticlePosition(G4ThreeVector(0.,G4double(i-1)*m,-1.5*m));
particleGun->GeneratePrimaryVertex(anEvent);
}
}
}
+90
View File
@@ -0,0 +1,90 @@
//
// ********************************************************************
// * DISCLAIMER *
// * *
// * The following disclaimer summarizes all the specific disclaimers *
// * of contributors to this software. The specific disclaimers,which *
// * govern, are listed with their locations in: *
// * http://cern.ch/geant4/license *
// * *
// * Neither the authors of this software system, nor their employing *
// * institutes,nor the agencies providing financial support for this *
// * work make any representation or warranty, express or implied, *
// * regarding this software system or assume any liability for its *
// * use. *
// * *
// * This code implementation is the intellectual property of the *
// * GEANT4 collaboration. *
// * By copying, distributing or modifying the Program (or any work *
// * based on the Program) you indicate your acceptance of this *
// * statement, and all its terms. *
// ********************************************************************
//
//
// $Id: ExN07Run.cc,v 1.3 2003/04/09 23:20:59 asaim Exp $
// GEANT4 tag $Name: geant4-05-01 $
//
#include "ExN07Run.hh"
#include "ExN07CalorHit.hh"
#include "ExN07StackingAction.hh"
#include "G4Event.hh"
#include "G4HCofThisEvent.hh"
G4Allocator<ExN07Run> anExN07RunAllocator;
ExN07Run::ExN07Run()
{
for(size_t i=0;i<6;i++)
{
totE[i] = 0.;
totL[i] = 0.;
nStep[i] = 0;
nGamma[i] = 0;
nElectron[i] = 0;
nPositron[i] = 0;
eMinGamma[i] = DBL_MAX;
eMinElectron[i] = DBL_MAX;
eMinPositron[i] = DBL_MAX;
}
}
ExN07Run::~ExN07Run()
{;}
void ExN07Run::RecordEvent(const G4Event* evt)
{
G4HCofThisEvent* HCE = evt->GetHCofThisEvent();
if(!HCE) return;
numberOfEvent++;
for(int j=0;j<6;j++)
{
nGamma[j] += ExN07StackingAction::GetNGamma(j);
nElectron[j] += ExN07StackingAction::GetNElectron(j);
nPositron[j] += ExN07StackingAction::GetNPositron(j);
if(eMinGamma[j]>ExN07StackingAction::GetEMinGamma(j))
{ eMinGamma[j] = ExN07StackingAction::GetEMinGamma(j); }
if(eMinElectron[j]>ExN07StackingAction::GetEMinElectron(j))
{ eMinElectron[j] = ExN07StackingAction::GetEMinElectron(j); }
if(eMinPositron[j]>ExN07StackingAction::GetEMinPositron(j))
{ eMinPositron[j] = ExN07StackingAction::GetEMinPositron(j); }
}
ExN07CalorHitsCollection* CHC = 0;
for(size_t i=0;i<6;i++)
{
if (HCE) CHC = (ExN07CalorHitsCollection*)(HCE->GetHC(i));
if (CHC)
{
G4int nHit = CHC->entries();
for (G4int ii=0;ii<nHit;ii++)
{
totE[i] += (*CHC)[ii]->GetEdep();
totL[i] += (*CHC)[ii]->GetTrak();
nStep[i] += (*CHC)[ii]->GetNStep();
}
}
}
}
+107
View File
@@ -0,0 +1,107 @@
//
// ********************************************************************
// * DISCLAIMER *
// * *
// * The following disclaimer summarizes all the specific disclaimers *
// * of contributors to this software. The specific disclaimers,which *
// * govern, are listed with their locations in: *
// * http://cern.ch/geant4/license *
// * *
// * Neither the authors of this software system, nor their employing *
// * institutes,nor the agencies providing financial support for this *
// * work make any representation or warranty, express or implied, *
// * regarding this software system or assume any liability for its *
// * use. *
// * *
// * This code implementation is the intellectual property of the *
// * GEANT4 collaboration. *
// * By copying, distributing or modifying the Program (or any work *
// * based on the Program) you indicate your acceptance of this *
// * statement, and all its terms. *
// ********************************************************************
//
//
// $Id: ExN07RunAction.cc,v 1.3 2003/04/09 23:20:59 asaim Exp $
// GEANT4 tag $Name: geant4-05-01 $
//
#include "ExN07RunAction.hh"
#include "ExN07Run.hh"
#include "G4RegionStore.hh"
#include "G4Region.hh"
#include "G4ProductionCuts.hh"
#include "G4ios.hh"
#include "G4UnitsTable.hh"
ExN07RunAction::ExN07RunAction()
{;}
ExN07RunAction::~ExN07RunAction()
{;}
G4Run* ExN07RunAction::GenerateRun()
{ return new ExN07Run; }
void ExN07RunAction::EndOfRunAction(const G4Run* aRun)
{
static G4String regName[3] = {"Calor-A","Calor-B","Calor-C"};
const ExN07Run* theRun = (const ExN07Run*)aRun;
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;
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;
G4cout << " Energy deposition in an event :" << 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;
}
}
@@ -0,0 +1,97 @@
//
// ********************************************************************
// * DISCLAIMER *
// * *
// * The following disclaimer summarizes all the specific disclaimers *
// * of contributors to this software. The specific disclaimers,which *
// * govern, are listed with their locations in: *
// * http://cern.ch/geant4/license *
// * *
// * Neither the authors of this software system, nor their employing *
// * institutes,nor the agencies providing financial support for this *
// * work make any representation or warranty, express or implied, *
// * regarding this software system or assume any liability for its *
// * use. *
// * *
// * This code implementation is the intellectual property of the *
// * GEANT4 collaboration. *
// * By copying, distributing or modifying the Program (or any work *
// * based on the Program) you indicate your acceptance of this *
// * statement, and all its terms. *
// ********************************************************************
//
#include "ExN07StackingAction.hh"
#include "G4Track.hh"
#include "G4ParticleDefinition.hh"
#include "G4ParticleTypes.hh"
#include "G4TouchableHistory.hh"
#include "G4VPhysicalVolume.hh"
#include "G4VProcess.hh"
G4int ExN07StackingAction::nGamma[6] = {0,0,0,0,0,0};
G4int ExN07StackingAction::nElectron[6] = {0,0,0,0,0,0};
G4int ExN07StackingAction::nPositron[6] = {0,0,0,0,0,0};
G4double ExN07StackingAction::eMinGamma[6] = {DBL_MAX,DBL_MAX,DBL_MAX,DBL_MAX,DBL_MAX,DBL_MAX};
G4double ExN07StackingAction::eMinElectron[6] = {DBL_MAX,DBL_MAX,DBL_MAX,DBL_MAX,DBL_MAX,DBL_MAX};
G4double ExN07StackingAction::eMinPositron[6] = {DBL_MAX,DBL_MAX,DBL_MAX,DBL_MAX,DBL_MAX,DBL_MAX};
ExN07StackingAction::ExN07StackingAction()
{;}
ExN07StackingAction::~ExN07StackingAction()
{;}
G4ClassificationOfNewTrack
ExN07StackingAction::ClassifyNewTrack(const G4Track * aTrack)
{
G4TouchableHistory* theTouchable
= (G4TouchableHistory*)(aTrack->GetTouchable());
if(theTouchable&&theTouchable->GetHistoryDepth()>1)
{
G4VPhysicalVolume* calPhys = theTouchable->GetVolume(1);
if(calPhys)
{
G4int i = 0;
if(calPhys->GetName()=="Cal-B") { i = 2; }
else if(calPhys->GetName()=="Cal-C") { i = 4; }
G4int layerNumber = theTouchable->GetReplicaNumber();
i += layerNumber%2;
G4ParticleDefinition * particleType = aTrack->GetDefinition();
if(particleType==G4Gamma::GammaDefinition())
{
nGamma[i]++;
if(eMinGamma[i]>aTrack->GetKineticEnergy())
{ eMinGamma[i]=aTrack->GetKineticEnergy(); }
}
else if(particleType==G4Electron::ElectronDefinition())
{
nElectron[i]++;
if(eMinElectron[i]>aTrack->GetKineticEnergy())
{ eMinElectron[i]=aTrack->GetKineticEnergy(); }
}
else if(particleType==G4Positron::PositronDefinition())
{
nPositron[i]++;
if(eMinPositron[i]>aTrack->GetKineticEnergy())
{ eMinPositron[i]=aTrack->GetKineticEnergy(); }
}
}
}
return fUrgent;
}
void ExN07StackingAction::PrepareNewEvent()
{
for(int i=0;i<6;i++)
{
nGamma[i] = 0;
nElectron[i] = 0;
nPositron[i] = 0;
eMinGamma[i] = DBL_MAX;
eMinElectron[i] = DBL_MAX;
eMinPositron[i] = DBL_MAX;
}
}
+145
View File
@@ -0,0 +1,145 @@
//
// ********************************************************************
// * DISCLAIMER *
// * *
// * The following disclaimer summarizes all the specific disclaimers *
// * of contributors to this software. The specific disclaimers,which *
// * govern, are listed with their locations in: *
// * http://cern.ch/geant4/license *
// * *
// * Neither the authors of this software system, nor their employing *
// * institutes,nor the agencies providing financial support for this *
// * work make any representation or warranty, express or implied, *
// * regarding this software system or assume any liability for its *
// * use. *
// * *
// * This code implementation is the intellectual property of the *
// * GEANT4 collaboration. *
// * By copying, distributing or modifying the Program (or any work *
// * based on the Program) you indicate your acceptance of this *
// * statement, and all its terms. *
// ********************************************************************
//
//
// $Id: ExN07VisManager.cc,v 1.1 2003/03/10 01:43:37 asaim Exp $
// GEANT4 tag $Name: geant4-05-01 $
//
#ifdef G4VIS_USE
#include "ExN07VisManager.hh"
// Supported drivers...
// Not needing external packages or libraries...
#include "G4ASCIITree.hh"
#include "G4DAWNFILE.hh"
#include "G4GAGTree.hh"
#include "G4HepRepFile.hh"
#include "G4HepRep.hh"
#include "G4RayTracer.hh"
#include "G4VRML1File.hh"
#include "G4VRML2File.hh"
// Needing external packages or libraries...
#ifdef G4VIS_USE_DAWN
#include "G4FukuiRenderer.hh"
#endif
#ifdef G4VIS_USE_OPACS
#include "G4Wo.hh"
#include "G4Xo.hh"
#endif
#ifdef G4VIS_USE_OPENGLX
#include "G4OpenGLImmediateX.hh"
#include "G4OpenGLStoredX.hh"
#endif
#ifdef G4VIS_USE_OPENGLWIN32
#include "G4OpenGLImmediateWin32.hh"
#include "G4OpenGLStoredWin32.hh"
#endif
#ifdef G4VIS_USE_OPENGLXM
#include "G4OpenGLImmediateXm.hh"
#include "G4OpenGLStoredXm.hh"
#endif
#ifdef G4VIS_USE_OIX
#include "G4OpenInventorX.hh"
#endif
#ifdef G4VIS_USE_OIWIN32
#include "G4OpenInventorWin32.hh"
#endif
#ifdef G4VIS_USE_VRML
#include "G4VRML1.hh"
#include "G4VRML2.hh"
#endif
ExN07VisManager::ExN07VisManager () {}
void ExN07VisManager::RegisterGraphicsSystems () {
// Graphics Systems not needing external packages or libraries...
RegisterGraphicsSystem (new G4ASCIITree);
RegisterGraphicsSystem (new G4DAWNFILE);
RegisterGraphicsSystem (new G4GAGTree);
RegisterGraphicsSystem (new G4HepRepFile);
RegisterGraphicsSystem (new G4HepRep);
RegisterGraphicsSystem (new G4RayTracer);
RegisterGraphicsSystem (new G4VRML1File);
RegisterGraphicsSystem (new G4VRML2File);
// Graphics systems needing external packages or libraries...
#ifdef G4VIS_USE_DAWN
RegisterGraphicsSystem (new G4FukuiRenderer);
#endif
#ifdef G4VIS_USE_OPACS
RegisterGraphicsSystem (new G4Wo);
RegisterGraphicsSystem (new G4Xo);
#endif
#ifdef G4VIS_USE_OPENGLX
RegisterGraphicsSystem (new G4OpenGLImmediateX);
RegisterGraphicsSystem (new G4OpenGLStoredX);
#endif
#ifdef G4VIS_USE_OPENGLWIN32
RegisterGraphicsSystem (new G4OpenGLImmediateWin32);
RegisterGraphicsSystem (new G4OpenGLStoredWin32);
#endif
#ifdef G4VIS_USE_OPENGLXM
RegisterGraphicsSystem (new G4OpenGLImmediateXm);
RegisterGraphicsSystem (new G4OpenGLStoredXm);
#endif
#ifdef G4VIS_USE_OIX
RegisterGraphicsSystem (new G4OpenInventorX);
#endif
#ifdef G4VIS_USE_OIWIN32
RegisterGraphicsSystem (new G4OpenInventorWin32);
#endif
#ifdef G4VIS_USE_VRML
RegisterGraphicsSystem (new G4VRML1);
RegisterGraphicsSystem (new G4VRML2);
#endif
if (fVerbose > 0) {
G4cout <<
"\nYou have successfully chosen to use the following graphics systems."
<< G4endl;
PrintAvailableGraphicsSystems ();
}
}
#endif
+14
View File
@@ -0,0 +1,14 @@
/control/verbose 2
/run/setCutForRegion Calor-A 0.2 mm
/run/setCutForRegion Calor-B 2 mm
/run/setCutForRegion Calor-C 2 cm
/run/beamOn 1
/run/dumpRegion
/run/dumpCouples
### store physice table
#/run/particle/verbose 3
/control/shell mkdir -p physTable
### set store format : 0 binary 1 ascii
/run/particle/setStoredInAscii 0
/run/particle/storePhysicsTable physTable
+30
View File
@@ -0,0 +1,30 @@
#
# Macro file for the initialization phase of "exampleN02.cc"
# when runing in interactive mode
#
# Sets some default verbose
#
/control/verbose 2
/run/verbose 2
#
# create empty scene
#
/vis/scene/create
#
# Create a scene handler for a specific graphics system
# (Edit the next line(s) to choose another graphic system)
#
/vis/open OGLIX
#
# draw scene
#
/vis/viewer/set/viewpointThetaPhi 90 180 deg
/vis/viewer/zoom 1.4
/vis/viewer/flush
#
# for drawing the tracks
# (if too many tracks cause core dump => storeTrajectory 0)
/tracking/storeTrajectory 1
/vis/scene/endOfEventAction accumulate
/vis/scene/add/trajectories