Import Geant4 5.1.0 source tree
This commit is contained in:
@@ -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_*
|
||||
|
||||
@@ -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.
|
||||
@@ -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
|
||||
|
||||
|
||||
@@ -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;
|
||||
}
|
||||
|
||||
@@ -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
|
||||
#
|
||||
@@ -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
|
||||
|
||||
@@ -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
|
||||
@@ -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
|
||||
|
||||
|
||||
@@ -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
|
||||
@@ -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
|
||||
|
||||
@@ -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
|
||||
@@ -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;
|
||||
}
|
||||
|
||||
|
||||
|
||||
@@ -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;
|
||||
}
|
||||
|
||||
@@ -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);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -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();
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@@ -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;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
Executable
+145
@@ -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
|
||||
|
||||
@@ -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
|
||||
@@ -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
|
||||
|
||||
Reference in New Issue
Block a user