Import Geant4 3.1.0 source tree

This commit is contained in:
Gabriele Cosmo
2016-06-08 16:03:00 +02:00
parent cfcb558cfe
commit 137e303ecc
2843 changed files with 37082 additions and 38426 deletions
+446
View File
@@ -0,0 +1,446 @@
Geant4 3.1 Release Notes
------------------------
6th April 2001
These are the main new features/fixes included in this release since
release 3.0 (for the detailed list of fixes/additions, please refer to the
related History files):
o Configuration:
-------------
- Added/enabled code in configuration files to store path to dynamic
library from example/test directory in the executable.
o Digits+Hits:
-----------
- Migrated classes to use STL <vector> instead of RW wrappers.
o Event:
-----
- Migrated classes to use STL <vector> instead of RW wrappers.
- Added proper time to G4PrimaryParticle.
- Fixed bug in G4GeneralParticleSource.
o Electromagnetic Processes (Low-energy):
--------------------------------------
- Changes for STL migration of G4OrderedTable and G4DataVector.
- Removed obsolete class G4Data.
o Electromagnetic Processes (Standard):
------------------------------------
- Small corrections in e/hEnergyLoss to ensure consistency between
cut in range and step limitation due to energy loss (finalRange
data member <-> cut in range)
- Change in energy loss computation in eBrems process.
Parametrisation of energy loss due to soft brems has been corrected
for big cut values.
- Bug-fix in e/hEnergyLoss processes for AlongStepDoIt().
Do not use PostStep information in AlongStepDoIt() when generating
sub-cutoff delta rays.
- Small corrections in MuEnergyLoss process.
- Bug fixed in MultipleScattering: there was an error in computation
of the transport cross section, the cross section was too small for
low energy (below few MeV for electrons).
- Bug fixed in G4MuBremstrahlung::PostStepDoIt() in sampling energy
of generated photons. Fixes the problem sometimes occuring of
negative interaction length detected.
- Fix at small cut value for error in loss fluctuations
(for example in Al 100 microns).
- Suppressed protection in PhotoElectric process.
- Adopt fStopButAlive in eplusAnnihilation process.
- Introduced new module 'integral' for integral processes: moved
existing integral processes (G4I*, G4VI*) therein.
o General Processes, Parameterisation, Decay, Optical:
---------------------------------------------------
- Modified G4OpRayleigh to allow for Rayleigh scattering length to
be defined for arbitrary material through the use of
G4MaterialPropertyTable. This deals with bug report #199.
- Fixes in the DoIt of G4OpRayleigh: to allow for positive and negative
CosTheta and to force the new momentum direction of the photon after
scattering to be in the same plane as the new and old polarization
vectors. Deals with bug report #207.
- Added abstract class G4VExtDecayer for external decayer and modified
G4Decay accordingly.
- Modified Store/RetrievePhysicsTable() methods: added a bool argument
to specify ascii/binary mode.
o Geometry:
--------
- Boolean solids:
o Minor fix to labels in G4Exception calls.
Fixes problem report #200.
o G4IntersectionSolid:
- Fix in CalculateExtent() for computation of 'pMin'
and 'pMax', to avoid assignment in case CalculateExtent() of
one component solid fails.
- Fix in Inside() to return 'kOutside' in case first component
solid's Inside() returns 'kOutside'.
o G4UnionSolid:
- Fix in DistanceToOut(p,v,...) for assignment of argument *n to
happen only if calcNorm is false.
- Fix in CalculateExtent() for computation of 'pMin' and 'pMax'.
- CSG solids
o G4Tubs:
- Corrections in phi-section algorithm of Inside(p).
- Fixed condition from (pPhi<0) to (pPhi<-0.5*kAngleTolerance)
in Inside(p). Fixes problem report #198.
- Fixed bug in function Inside(p) in computation of pPhi
for points at phi = 0 if the (start phi)+(delta phi) is
at phi = 0.
- Temporarly modified CalculateExtent(...), now simply based
on G4Box::CalculateExtent(...).
o G4Box:
- Introduced checks against negative (or <2*kCarTolerance)
dimensions in methods SetXHalfLength(), SetYHalfLength() and
SetZHalfLength().
- Fixes to algorithm for computation of rotated vertices in
CalculateExtent().
o G4Torus:
- Extracted logic for G4PolynomialSolver now included
in global/HEPNumerics.
- Specific solids:
o Fix in G4Hype::DistanceToOut(p,v,...): added protection against
zero v.z.
o G4IntersectingCone: make small adjustment to help with roundoff
error in LineHitsCone1() and LineHitsCone2().
- Magnetic Field
o Minor fix to G4MagneticField.hh: added explicit call to G4Field()
in copy constructor. Fixes problem report #205.
o Fixed G4MagHelicalStepper::AdvanceHelix for momentum, allowing
the possibility of (correct) use of all Helical Steppers.
o Corrected field components in G4UniformElectricField.
- Management
o Introduced G4AssemblyVolume: helper class to combine
volumes together in an arbitrary way in the 3D space.
- Volumes
o Fix in G4ReplicaNavigation::ComputeTransformation() to consider
'pVol' for SetPhiTransformation() in the kPhi case.
o Fix in G4ReplicaNavigation::ComputeStep() to initialise 'ourStep'
to kCarTolerance.
o Global:
------
- Migrated G4PhysicsTable, G4PhysicsVector and all related classes
to use STL <vector> instead of RW wrappers.
- Fix to G4Allocator destructor: bug report #181.
- Added generic class G4PolynomialSolver in HEPNumerics module.
- Removed from G4PhysicsVector dependency over G4PhysicsTable.
Removed methods: LinkPhysicsTable(), IsLinkedTableExist() and
GetNextTable(). Removed data-member ptrNextTable.
- Added new unit 'parsec' to SystemOfUnits.h
- Fixed bug in constructor of G4PhysicsLnVector: initialised
'dataVector' to zero.
- Added Store/RetrievePhysicsTable methods in G4PhysicsTable.
- Added Store/Retrieve and GetType methods in G4PhysicsVector and
related.
- Introduced G4PhysicsVectorType class (enumeration).
- G4UnitsTable: resolved ambiguity of old/new style iostream for
formatting in operator<<.
o Graphics Representations:
------------------------
- Tidying for CodeWizard. Added virtual destructors to
HepPolyhedronBox, etc. Also made all constructors non-inline.
- Removed G4Circle.icc and G4VVisPrim.icc.
o Hadronic Processes:
------------------
- Bug fix for very low energy ion cross-sections; should have no
visible effect.
- Moved inline implementation of G4Solver to G4Solver.icc.
o Materials:
---------
- Bug fixed in G4IonisParamMat.cc : E100eV instead of E100keV
This bug affected the values of the density correction parameters
in the energy loss (dE/dx) computation: ~3-5 % error in dE/dx in
the energy range 1 MeV - 50 MeV !
- Added new method G4Material::GetNuclearInterLength().
- Bug fix concerning units in G4SandiaTable::GetSandiaCofPerAtom().
Reimplemented G4SandiaTable::ComputeMatSandiaMatrix().
- Added protection in GetSandiaCofForMaterial().
- fnulcof added as data member in G4SandiaTable.
- Revision of destructor, copy constructor, assignement operator in
G4IonisParam, G4Isotope, G4Element and G4Material, according to
problem report #106.
- Removed warning to cerr in GetIsotope(name), GetElement(name),
and GetMaterial(name).
o Particles:
---------
- Added pre-assignedDecayTime to G4DynamicParticle.
- Bug fix in calculation of electron energy in G4MuDecayChannel.
Fixes problem report #224.
- Fixed a bug in G4DynamicParticle::SetDefinition() for problem
report #228.
- Added RestoreCuts() methods to G4ParticleWithCuts class.
o Persistency:
-----------
- G4PDCofThisEvent.ddl: fixed a bug in GetNumberOfCollections().
o Readout:
-------
- Migrated classes to use STL <vector> instead of RW wrappers.
o Run and Intercoms:
-----------------
- Migrated classes to use STL <vector> instead of RW wrappers.
o Tracking & Track:
----------------
- Changes for STL migration of G4OrderedTable and G4DataVector.
- Migrated classes to use STL <vector> instead of RW wrappers.
- Added comments to headers for the Software Reference Manual.
- Added copy constructor for G4Track.
- Fix in G4Track::GetVelocity() for Gamma
- Fixes to G4StepPoint::GetVelocity() for problem report #208
and to return correct value in case of optical-photon.
- Added call to SetVelocity() in G4Step::InitializeStep().
- G4PArticleChange: fix in case momentum is zero, (even if
energy>0.0 and very small) to overcome problems due to
precision issues.
o Transportation:
--------------
- Improved calculation of energy at the end of the field.
- G4Transportation modified to use new FieldTrack, and get Kinetic
Energy from it. This implements integration in Momentum (*c-light)
instead of velocity.
o Visualization:
-------------
- Changed rotation of phi-replicas in G4PhysicalVolumeModel.cc to
ensure correspondence with rule that phi=0 bisects the replica.
WARNING: Prior to this fix the graphics did NOT correspond to the
replica navigation. If you have been relying on the graphics to
position daughter volumes in a phi-replica, navigation will have
been incorrect, possibly without causing a crash. The above fix
will change the apparent position as shown by the graphics and you
will have to correct the positioning of daughters. Make sure the
daughters are all properly enclosed within the replica. Graphics
and navigation now correspond.
- Added auto-refresh facility for OpenGL.
- Bug fixes for problems:
#120: improved up vector calculation to avoid view "flipping"
at (90, 90).
#157: fixed crash when viewer was defined before scene.
#204: fixed failure to change number of sides per circle.
- Fixed problem when requested physical volume was at depth 2 or more.
- Migrated classes to use STL <vector> instead of RW wrappers.
- Introduced many new commands (listed below). Old commands print a
DEPRECATED warning.
o New compound command:
/vis/drawView [<theta-deg>] [<phi-deg>]
[<pan-right>] [<pan-up>] [<pan-unit>]
[<zoom-factor>] [<dolly>] [<dolly-unit>]
o New primitive commands:
/vis/enable [true|false]
/vis/disable
/vis/verbose []
/vis/viewer/set/lineSegmentsPerCircle []
/vis/viewer/set/sectionPlane ...
/vis/viewer/set/autoRefresh
/vis/viewer/set/projection
/vis/viewer/dolly
/vis/viewer/dollyTo
/vis/viewer/lightsThetaPhi
/vis/viewer/lightsVector
/vis/viewer/pan
/vis/viewer/panTo
/vis/viewer/viewpointThetaPhi
/vis/viewer/viewpointVector
/vis/viewer/zoom
/vis/viewer/zoomTo
/vis/viewer/set/hiddenMarker
/vis/viewer/set/lightsMove
o G4toG4 Tool:
-----------
- Fixed bug in G3toG4BuildTree(G3VolTableEntry*, G3VolTableEntry*)
when positioning volume copies. Index is now decremented.
Added -DG3G4DEBUG to CPPFLAGS in GNUmakefile.
Fixes bug report #188.
- Added support for replicated "PARA" shapes in
G3Division::CreateSolid(...). Slices are placed with
G4PVPlacement instead of G4PVReplica for this particular case.
- G3toG4MakeSolid.cc: fixed bug in construction of G4Sphere where
'theta' and 'phi' parameters were reversed according to G4Sphere
constructor. Fixes problem report #230.
o Examples:
--------
- Introduced modular Physics List in exampleN04.
- ExampleN02: fix to ExN02ChamberParameterisation and
ExN02DetectorConstruction to cope with bug report #186.
- Added G4MuonMinusCaptureAtRest in physics list of ExampleN04.
Notes:
o Geant4 3.1 is based on STL and can be installed with strict
ISO/ANSI C++ compliant setup or not. See notes below.
The code and some binary libraries are available through our "Source Code"
Web page:
- see our <A href="http://cern.ch/geant4">Geant4 Home Page</A>.
Please refer to <A
href="http://cern.ch/geant4/G4UsersDocuments/Overview/html/index.html">Geant4
User Documentation</A> for further information about using Geant4.
Updates to the documentation for Geant4 3.1 are expected to be published as
usual within three weeks from the release date.
Contents
--------
1. Supported and Tested Platforms
2. ANAPHE and CLHEP
3. The Standard Template Library (STL)
4. Persistency
5. Compiler Specific Problems
6. Known Run-Time Problems
7. Compilation Warnings
8. Known Run-Time Warnings
1. Supported and Tested Platforms
---------------------------------
o SUN Solaris 5.6/5.7, C++ 4.2 Patch 104631-04, C++ 5.2 Patch 109508-02.
o HP 10.20, aCC C++ B3910B A.01.23
o Linux 2.2.17-7, gcc C++ egcs-2.91.66 (egcs 1.1.2), gcc 2.95.2.
This configuration was tested with the RedHat 6.1 distribution, but
versions of Geant4 have also been compiled successfully on Debian
and Suse distributions.
o NT 4.0 with Service Pack 4 and Cygnus Tools b20 with:
Visual C++ 6.0 Service Pack 2
Platforms also tested but giving rise to some problems - see below:
o DEC V4.0, cxx C++ V6.1-027.
Platforms configured but not tested and not supported:
o SGI V6.5.5, CC 7.2.1 with ObjectSpace
o AIX 4.3.2, xlC compiler with ObjectSpace
2. ANAPHE and CLHEP
-------------------
Geant4 3.1 requires the installation of CLHEP.
See <A href="http://wwwinfo.cern.ch/asd/lhc++/INSTALLATION/clhep.html">
CLHEP</A>. Tests have been performed with CLHEP 1.6.0.0.
By default, the CLHEP installation scripts will activate ISO/ANSI C++ features
if the compiler is capable. You need to explicitly disable CLHEP settings in
case you wish non-ISO/ANSI setup on specific compilers.
Geant4 3.1 coworks with ANAPHE 3.2.0 and components included therein:
Objectivity 5.2.1
ObjectSpace 2.1
HepODBMS 0.3.1.4
CLHEP 1.6.0.0
For more information about ANAPHE 3.2.0, see:
<A href="http://wwwinfo.cern.ch/asd/lhc++/release/3.2.0/3.2.0.html">ANAPHE 3.2.0</A>
3. The Standard Template Library
--------------------------------
The following versions of STL have been tested:
ObjectSpace STL on SUN (CC 4.2).
See <A href="http://www.objectspace.com/">ObjectSpace</A>.
"Native" STL on: Windows/NT, Linux, HP, DEC and SUN (CC 5.2).
This is selected at installation/compile time by the environment variable
G4USE_OSPACE in the case of the former - see documentation.
NOTES:
- Be aware that by default, the installation scripts will expect to use
the native STL implementation. You must set the G4USE_OSPACE variable
in the environment in order to select the ObjectSpace implementation.
- Platform specific setup:
o DEC: ObjectSpace is required in non ISO/ANSI setup.
Native STL is required for ISO/ANSI setup.
o HP: either ObjectSpace or native STL can be used (non ISO/ANSI setup).
o SUN: ObjectSpace is required in non ISO/ANSI setup (CC 4.2).
Native STL is required for ISO/ANSI setup (CC 5.2 only).
o Linux: Native STL is required (non ISO/ANSI setup).
o NT: Native STL and ISO/ANSI setup required.
In the interest of stability, part of the code in Geant4 3.1 still makes use
of the "STL Interface" wrapper classes, used for allowing the migration from
Rogue Wave Tools.h++ container library. For these the emphasis has remained
on correct behaviour, rather than performance.
4. Persistency
--------------
See release notes for Geant4 3.0.
5. Compiler Specific Problems
-----------------------------
o DEC V4.0, cxx C++ V6.1-027.
- We have found cases of mis-compilation of min and max templates
on DEC. We have traced those which cause serious malfunction
but there is no guarantee that there are no other cases.
Detailed inspection of assembler output suggests that this
problem might not be confined to min and max. This has been
reported to DEC/Compaq. We understand a new version 6.2 of the
compiler is now available. However we cannot guarantee correct
execution of Geant4 on DEC with the current version of the
compiler.
- A bug in cin.getline() system function causes an anomalous
behavior when running in interactive-mode on DEC-cxx 6.1 in
ISO/ANSI mode. We tested the bug has been fixed in more recent
versions of the compiler.
6. Known Run-Time Problems and Limitations
------------------------------------------
For a complete list of outstanding run-time problems and to submit any
problem you may find running this version of Geant4, please refer to the
Geant4 Problem Reporting System, available on the Web at this address:
http://wwwinfo.cern.ch/asd/cgi-bin/geant4/problemreport
7. Compilation Warnings
-----------------------
There are compilation warnings on some platforms. We do not believe
that any will lead to incorrect run-time behaviour, but we are working
on reducing them.
8. Known Run-Time Warnings
--------------------------
The following messages can be written to error output while tracking. We
believe none give rise to incorrect behaviour.
o G4PropagateInField: Warning: Particle is looping
- tracking in field will be stopped.
It has performed 10000 steps in Field while a maximum of 10000
are allowed.
+19 -2
View File
@@ -1,5 +1,5 @@
$Id: History,v 1.129 2000/12/13 09:19:56 gcosmo Exp $
$Name: geant4-03-00 $
$Id: History,v 1.132.2.1 2001/03/22 14:00:01 gunter Exp $
$Name: geant4-03-01 $
-------------------------------------------------------------------
=========================================================
@@ -17,6 +17,23 @@ committal in the CVS repository !
* Reverse chronological order (last date on top), please *
----------------------------------------------------------
22 March 2001 Gunter Folger (config-V03-00-03)
- binmake.gmk, only store in executable PATH to libs from example/test;
other libs should be taken/found from LD_LIBRARY_PATH
- sys/{Linux-g++,SUN-CC}.gmk: enable storing of PATH to libs in executable
06th March 2001 Gabriele Cosmo (config-V03-00-02)
- binmake.gmk: added include path for processes/electromagnetic/integral
the new subcategory introduced with tag em-V03-00-04.
13th February 2001 Gabriele Cosmo (config-V03-00-01)
- binmake.gmk: added include path for processes/photolepton_hadron
which was missing!
08th January 2001 Gabriele Cosmo (config-V03-00-00)
- sys/WIN32-VC.gmk: introduced -GR compiler option to allow usage of
dynamic casting and type-info at run-time.
13th December 2000 Gunter Folger (config-V02-00-14)
- common.gmk: fix to rule for building dependencies, parsing is skip
if $(dependencies) is empty.
+5 -7
View File
@@ -1,4 +1,4 @@
# $Id: binmake.gmk,v 1.54 2000/12/05 17:19:49 morita Exp $
# $Id: binmake.gmk,v 1.56.2.1 2001/03/22 13:54:24 gunter Exp $
# ----------------------------------------------------------
# Script defining rules and paths for making binaries.
# Gabriele Cosmo, 25/06/1998.
@@ -37,7 +37,9 @@ ifndef INCFLAGS
-I$(G4BASE)/processes/optical/include \
-I$(G4BASE)/processes/transportation/include \
-I$(G4BASE)/processes/parameterisation/include \
-I$(G4BASE)/processes/photolepton_hadron/include \
-I$(G4BASE)/processes/electromagnetic/standard/include \
-I$(G4BASE)/processes/electromagnetic/integral/include \
-I$(G4BASE)/processes/electromagnetic/muons/include \
-I$(G4BASE)/processes/electromagnetic/utils/include \
-I$(G4BASE)/processes/electromagnetic/xrays/include \
@@ -115,12 +117,6 @@ endif
CPPFLAGS += $(INCFLAGS)
LDFLAGS += -L$(G4LIBDIR)
ifdef SHAREDLIBS
ifdef G4RUNPATHOPTION
LDFLAGS += $(G4RUNPATHOPTION)$(G4LIBDIR)
endif
endif
G4TMPDIR := $(G4TMP)/$(G4SYSTEM)/$(G4TARGET)
G4BINDIR := $(G4BIN)/$(G4SYSTEM)
@@ -129,6 +125,8 @@ ifdef G4EXLIB
LDFLAGS += -L$(G4LIBDIR)
ifdef SHAREDLIBS
ifdef G4RUNPATHOPTION
# for the example dependant directory, keep the path to the shared lib
# in the executable.
LDFLAGS += $(G4RUNPATHOPTION)$(G4LIBDIR)
endif
endif
+1 -1
View File
@@ -21,7 +21,7 @@ ifeq ($(G4SYSTEM),Linux-g++)
FCFLAGS += -fPIC
CCFLAGS += -fPIC
endif
#future G4RUNPATHOPTION := -rpath
G4RUNPATHOPTION := -Wl,-rpath
FC := g77
FCFLAGS += -fno-automatic -fno-backslash -fno-second-underscore
FCLIBS := -lg2c -lnsl
+1
View File
@@ -3,6 +3,7 @@
#
ifeq ($(G4SYSTEM),SUN-CC)
CXX := CC
# -Qoption ld -m
ifdef G4OPTIMISE
CXXFLAGS := -O
else
+1 -1
View File
@@ -12,7 +12,7 @@ ifeq ($(G4SYSTEM),WIN32-VC)
CXXFLAGS += -Od -Zi -Fd$(G4LIBDIR)/lib$(name)
endif
endif
CXXFLAGS += -MD -GX -Zm200 -nologo -DWIN32 -D_CONSOLE
CXXFLAGS += -MD -GR -GX -Zm200 -nologo -DWIN32 -D_CONSOLE
CXXFLAGS += -D_WIN32 -DOS
CPPFLAGS += -DWIN32
#
+1 -1
View File
@@ -6,7 +6,7 @@
// and all its terms.
//
// $Id: EXPO.cc,v 1.8 2000/03/17 08:56:10 barrand Exp $
// GEANT4 tag $Name: geant4-03-00 $
// GEANT4 tag $Name: geant4-03-01 $
//
#include <stdlib.h>
+1 -1
View File
@@ -6,7 +6,7 @@
// and all its terms.
//
// $Id: TEST.cc,v 1.3 1999/12/15 14:48:40 gunter Exp $
// GEANT4 tag $Name: geant4-03-00 $
// GEANT4 tag $Name: geant4-03-01 $
//
#include <stdlib.h>
+1 -1
View File
@@ -6,7 +6,7 @@
// and all its terms.
//
// $Id: EXPO_Detector.icc,v 1.3 1999/12/15 14:48:41 gunter Exp $
// GEANT4 tag $Name: geant4-03-00 $
// GEANT4 tag $Name: geant4-03-01 $
//
// See also G4/run/example/MyDetectorConstruction.cc.
@@ -6,7 +6,7 @@
// and all its terms.
//
// $Id: EXPO_PhysicsList.hh,v 1.4 1999/12/15 14:48:41 gunter Exp $
// GEANT4 tag $Name: geant4-03-00 $
// GEANT4 tag $Name: geant4-03-01 $
//
//
// ------------------------------------------------------------
@@ -6,7 +6,7 @@
// and all its terms.
//
// $Id: EXPO_PhysicsList.icc,v 1.4 1999/12/15 14:48:41 gunter Exp $
// GEANT4 tag $Name: geant4-03-00 $
// GEANT4 tag $Name: geant4-03-01 $
//
//
// ------------------------------------------------------------
+1 -1
View File
@@ -6,7 +6,7 @@
// and all its terms.
//
// $Id: EXPO_Primary.icc,v 1.3 1999/12/15 14:48:41 gunter Exp $
// GEANT4 tag $Name: geant4-03-00 $
// GEANT4 tag $Name: geant4-03-01 $
//
// See also G4/run/example/EXPO_PrimaryGeneratorAction.cc.
+1 -1
View File
@@ -6,7 +6,7 @@
// and all its terms.
//
// $Id: G4o.h,v 1.3 1999/12/15 14:48:41 gunter Exp $
// GEANT4 tag $Name: geant4-03-00 $
// GEANT4 tag $Name: geant4-03-01 $
//
/* +---------------------- Copyright notice -------------------------------+ */
/* | Copyright (C) 1995, Guy Barrand, LAL Orsay, (barrand@lal.in2p3.fr) | */
+1 -1
View File
@@ -6,7 +6,7 @@
// and all its terms.
//
// $Id: G4oCommon.hh,v 1.3 1999/12/15 14:48:41 gunter Exp $
// GEANT4 tag $Name: geant4-03-00 $
// GEANT4 tag $Name: geant4-03-01 $
//
/*
Included by G4o.h.
+1 -1
View File
@@ -6,7 +6,7 @@
// and all its terms.
//
// $Id: G4oCommon.icc,v 1.3 1999/12/15 14:48:41 gunter Exp $
// GEANT4 tag $Name: geant4-03-00 $
// GEANT4 tag $Name: geant4-03-01 $
//
/*
Included by G4o.cc.
+1 -1
View File
@@ -6,7 +6,7 @@
// and all its terms.
//
// $Id: G4oDrawer.hh,v 1.3 1999/12/15 14:48:43 gunter Exp $
// GEANT4 tag $Name: geant4-03-00 $
// GEANT4 tag $Name: geant4-03-01 $
//
/* +---------------------- Copyright notice -------------------------------+ */
/* | Copyright (C) 1995, Guy Barrand, LAL Orsay, (barrand@lal.in2p3.fr) | */
+1 -1
View File
@@ -6,7 +6,7 @@
// and all its terms.
//
// $Id: G4oEXPO.h,v 1.3 1999/12/15 14:48:43 gunter Exp $
// GEANT4 tag $Name: geant4-03-00 $
// GEANT4 tag $Name: geant4-03-01 $
//
/* +---------------------- Copyright notice -------------------------------+ */
/* | Copyright (C) 1995, Guy Barrand, LAL Orsay, (barrand@lal.in2p3.fr) | */
+1 -1
View File
@@ -6,7 +6,7 @@
// and all its terms.
//
// $Id: G4oScene.hh,v 1.4 2000/03/17 08:58:32 barrand Exp $
// GEANT4 tag $Name: geant4-03-00 $
// GEANT4 tag $Name: geant4-03-01 $
//
/* +---------------------- Copyright notice -------------------------------+ */
/* | Copyright (C) 1995, Guy Barrand, LAL Orsay, (barrand@lal.in2p3.fr) | */
+1 -1
View File
@@ -6,7 +6,7 @@
// and all its terms.
//
// $Id: G4oState.hh,v 1.4 1999/12/15 14:48:43 gunter Exp $
// GEANT4 tag $Name: geant4-03-00 $
// GEANT4 tag $Name: geant4-03-01 $
//
#ifndef G4oState_h
#define G4oState_h
+1 -1
View File
@@ -6,7 +6,7 @@
// and all its terms.
//
// $Id: WoG4o.h,v 1.3 1999/12/15 14:48:43 gunter Exp $
// GEANT4 tag $Name: geant4-03-00 $
// GEANT4 tag $Name: geant4-03-01 $
//
/* +---------------------- Copyright notice -------------------------------+ */
/* | Copyright (C) 1995, Guy Barrand, LAL Orsay, (barrand@lal.in2p3.fr) | */
+1 -1
View File
@@ -6,7 +6,7 @@
// and all its terms.
//
// $Id: G4o.cc,v 1.7 2000/03/17 08:57:45 barrand Exp $
// GEANT4 tag $Name: geant4-03-00 $
// GEANT4 tag $Name: geant4-03-01 $
//
/*
#define DEBUG
+1 -1
View File
@@ -6,7 +6,7 @@
// and all its terms.
//
// $Id: G4oDrawer.cc,v 1.6 2000/03/17 08:57:46 barrand Exp $
// GEANT4 tag $Name: geant4-03-00 $
// GEANT4 tag $Name: geant4-03-01 $
//
/*
From geant4/visualization/management/src/G4VisManager.cc.
+1 -1
View File
@@ -6,7 +6,7 @@
// and all its terms.
//
// $Id: G4oScene.cc,v 1.7 2000/06/09 10:00:58 barrand Exp $
// GEANT4 tag $Name: geant4-03-00 $
// GEANT4 tag $Name: geant4-03-01 $
//
/* +---------------------- Copyright notice -------------------------------+ */
/* | Copyright (C) 1995, Guy Barrand, LAL Orsay, (barrand@lal.in2p3.fr) | */
+1 -1
View File
@@ -6,7 +6,7 @@
// and all its terms.
//
// $Id: G4oState.cc,v 1.6 2000/03/17 08:57:48 barrand Exp $
// GEANT4 tag $Name: geant4-03-00 $
// GEANT4 tag $Name: geant4-03-01 $
//
//#define DEBUG
+4 -1
View File
@@ -1,4 +1,4 @@
$Id: History,v 1.58 2000/11/18 10:56:11 stesting Exp $
$Id: History,v 1.59 2001/01/25 11:58:05 stesting Exp $
-------------------------------------------------------------------
=========================================================
@@ -17,6 +17,9 @@ committal in the CVS repository !
* Reverse chronological order (last date on top), please *
----------------------------------------------------------
25-Jan-2001 Steve O'Neale (examples-V03-00-00)
- Updated all "small_N" test outputs
18th Nov 2000 Steve O'Neale (examples-V02-00-05)
- Updated test 102,104,508 outputs
+1 -1
View File
@@ -6,7 +6,7 @@
// statement, and all its terms.
//
// $Id: Brachy.cc,v 1.4 2000/12/10 08:56:15 chauvie Exp $
// GEANT4 tag $Name: geant4-03-00 $
// GEANT4 tag $Name: geant4-03-01 $
//
// --------------------------------------------------------------
// GEANT 4 - Brachytherapy example
@@ -6,7 +6,7 @@
// and all its terms.
//
// $Id: GammaRayTel.cc,v 1.3 2000/12/06 16:53:12 flongo Exp $
// GEANT4 tag $Name: geant4-03-00 $
// GEANT4 tag $Name: geant4-03-01 $
//
//
// ------------------------------------------------------------
@@ -5,8 +5,8 @@
// based on the Program) you indicate your acceptance of this statement,
// and all its terms.
//
// $Id: GammaRayTelAnalysisManager.hh,v 1.1 2000/12/06 16:53:12 flongo Exp $
// GEANT4 tag $Name: geant4-03-00 $
// $Id: GammaRayTelAnalysisManager.hh,v 1.2 2001/03/05 13:58:19 flongo Exp $
// GEANT4 tag $Name: geant4-03-01 $
// ------------------------------------------------------------
// GEANT 4 class header file
// CERN Geneva Switzerland
@@ -97,3 +97,6 @@ private:
@@ -6,7 +6,7 @@
// and all its terms.
//
// $Id: GammaRayTelAnalysisMessenger.hh,v 1.1 2000/12/06 16:53:13 flongo Exp $
// GEANT4 tag $Name: geant4-03-00 $
// GEANT4 tag $Name: geant4-03-01 $
//
// ------------------------------------------------------------
// GEANT 4 class header file
@@ -0,0 +1,104 @@
// 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: GammaRayTelAnticoincidenceHit.hh,v 1.1 2001/03/05 13:58:20 flongo Exp $
// GEANT4 tag $Name: geant4-03-01 $
// ------------------------------------------------------------
// GEANT 4 class header file
// CERN Geneva Switzerland
//
// For information related to this code contact:
// CERN, IT Division, ASD group
//
// ------------ GammaRayTelAnticoincidenceHit ------
// by R.Giannitrapani, F.Longo & G.Santin (13 nov 2000)
//
// ************************************************************
// This Class describe the hits on the Anticoincidence
#ifndef GammaRayTelAnticoincidenceHit_h
#define GammaRayTelAnticoincidenceHit_h 1
#include "G4VHit.hh"
#include "G4THitsCollection.hh"
#include "G4Allocator.hh"
#include "G4ThreeVector.hh"
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo....
class GammaRayTelAnticoincidenceHit : public G4VHit
{
public:
GammaRayTelAnticoincidenceHit();
~GammaRayTelAnticoincidenceHit();
GammaRayTelAnticoincidenceHit(const GammaRayTelAnticoincidenceHit&);
const GammaRayTelAnticoincidenceHit& operator=(const
GammaRayTelAnticoincidenceHit&);
int operator==(const GammaRayTelAnticoincidenceHit&) const;
inline void* operator new(size_t);
inline void operator delete(void*);
void Draw();
void Print();
private:
G4double EdepACD; // Energy deposited on the ACD tile
G4ThreeVector pos; // Position of the hit
G4int ACDTileNumber; // Number of the ACD tile
G4int IsACDPlane; // Type of the plane (0 top, 1 L-R, 2 F-R)
public:
inline void AddEnergy(G4double de) {EdepACD += de;};
inline void SetACDTileNumber(G4int i) {ACDTileNumber = i;};
inline void SetACDType(G4int i) {IsACDPlane = i;};
inline void SetPos(G4ThreeVector xyz){ pos = xyz; }
inline G4double GetEdepACD() { return EdepACD; };
inline G4int GetACDTileNumber() { return ACDTileNumber; };
inline G4int GetACDType() {return IsACDPlane;};
inline G4ThreeVector GetPos() { return pos; };
};
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo....
typedef G4THitsCollection<GammaRayTelAnticoincidenceHit> GammaRayTelAnticoincidenceHitsCollection;
extern G4Allocator<GammaRayTelAnticoincidenceHit> GammaRayTelAnticoincidenceHitAllocator;
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo....
inline void* GammaRayTelAnticoincidenceHit::operator new(size_t)
{
void* aHit;
aHit = (void*) GammaRayTelAnticoincidenceHitAllocator.MallocSingle();
return aHit;
}
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo....
inline void GammaRayTelAnticoincidenceHit::operator delete(void* aHit)
{
GammaRayTelAnticoincidenceHitAllocator.FreeSingle((GammaRayTelAnticoincidenceHit*) aHit);
}
#endif
@@ -0,0 +1,65 @@
// 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: GammaRayTelAnticoincidenceSD.hh,v 1.1 2001/03/05 13:58:20 flongo Exp $
// GEANT4 tag $Name: geant4-03-01 $
// ------------------------------------------------------------
// GEANT 4 class header file
// CERN Geneva Switzerland
//
// For information related to this code contact:
// CERN, IT Division, ASD group
//
// ------------ GammaRayTelAnticoincidenceSD ------
// by R.Giannitrapani, F.Longo & G.Santin (13 nov 2000)
//
// ************************************************************
#ifndef GammaRayTelAnticoincidenceSD_h
#define GammaRayTelAnticoincidenceSD_h 1
#include "G4VSensitiveDetector.hh"
#include "globals.hh"
class GammaRayTelDetectorConstruction;
class G4HCofThisEvent;
class G4Step;
#include "GammaRayTelAnticoincidenceHit.hh"
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo....
class GammaRayTelAnticoincidenceSD : public G4VSensitiveDetector
{
public:
GammaRayTelAnticoincidenceSD(G4String, GammaRayTelDetectorConstruction* );
~GammaRayTelAnticoincidenceSD();
void Initialize(G4HCofThisEvent*);
G4bool ProcessHits(G4Step* astep,G4TouchableHistory* ROHist);
void EndOfEvent(G4HCofThisEvent*);
void clear();
void DrawAll();
void PrintAll();
private:
GammaRayTelAnticoincidenceHitsCollection* AnticoincidenceCollection;
GammaRayTelDetectorConstruction* Detector;
G4int *HitLateralID;
G4int *HitTopID;
G4int NbOfACDLateralTiles;
G4int NbOfACDTopTiles;
};
#endif
@@ -0,0 +1,107 @@
// 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: GammaRayTelCalorimeterHit.hh,v 1.1 2001/03/05 13:58:20 flongo Exp $
// GEANT4 tag $Name: geant4-03-01 $
// ------------------------------------------------------------
// GEANT 4 class header file
// CERN Geneva Switzerland
//
// For information related to this code contact:
// CERN, IT Division, ASD group
//
// ------------ GammaRayTelCalorimeterHit ------
// by R.Giannitrapani, F.Longo & G.Santin (13 nov 2000)
//
// ************************************************************
// This Class describe the hits on the Calorimeter
#ifndef GammaRayTelCalorimeterHit_h
#define GammaRayTelCalorimeterHit_h 1
#include "G4VHit.hh"
#include "G4THitsCollection.hh"
#include "G4Allocator.hh"
#include "G4ThreeVector.hh"
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo....
class GammaRayTelCalorimeterHit : public G4VHit
{
public:
GammaRayTelCalorimeterHit();
~GammaRayTelCalorimeterHit();
GammaRayTelCalorimeterHit(const GammaRayTelCalorimeterHit&);
const GammaRayTelCalorimeterHit& operator=(const
GammaRayTelCalorimeterHit&);
int operator==(const GammaRayTelCalorimeterHit&) const;
inline void* operator new(size_t);
inline void operator delete(void*);
void Draw();
void Print();
private:
G4double EdepCAL; // Energy deposited on the ACD tile
G4ThreeVector pos; // Position of the hit
G4int CALBarNumber; // Number of the CAL tile
G4int CALPlaneNumber; // Number of the CAL plane
G4int IsCALPlane; // Type of the plane (0 X, 1 Y)
public:
inline void AddEnergy(G4double de) {EdepCAL += de;};
inline void SetCALBarNumber(G4int i) {CALBarNumber = i;};
inline void SetCALPlaneNumber(G4int i) {CALPlaneNumber = i;};
inline void SetCALType(G4int i) {IsCALPlane = i;};
inline void SetPos(G4ThreeVector xyz){ pos = xyz; }
inline G4double GetEdepCAL() { return EdepCAL; };
inline G4int GetCALBarNumber() { return CALBarNumber; };
inline G4int GetCALPlaneNumber() { return CALPlaneNumber; };
inline G4int GetCALType() {return IsCALPlane;};
inline G4ThreeVector GetPos() { return pos; };
};
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo....
typedef G4THitsCollection<GammaRayTelCalorimeterHit> GammaRayTelCalorimeterHitsCollection;
extern G4Allocator<GammaRayTelCalorimeterHit> GammaRayTelCalorimeterHitAllocator;
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo....
inline void* GammaRayTelCalorimeterHit::operator new(size_t)
{
void* aHit;
aHit = (void*) GammaRayTelCalorimeterHitAllocator.MallocSingle();
return aHit;
}
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo....
inline void GammaRayTelCalorimeterHit::operator delete(void* aHit)
{
GammaRayTelCalorimeterHitAllocator.FreeSingle((GammaRayTelCalorimeterHit*) aHit);
}
#endif
@@ -0,0 +1,65 @@
// 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: GammaRayTelCalorimeterSD.hh,v 1.1 2001/03/05 13:58:20 flongo Exp $
// GEANT4 tag $Name: geant4-03-01 $
// ------------------------------------------------------------
// GEANT 4 class header file
// CERN Geneva Switzerland
//
// For information related to this code contact:
// CERN, IT Division, ASD group
//
// ------------ GammaRayTelCalorimeterSD ------
// by R.Giannitrapani, F.Longo & G.Santin (13 nov 2000)
//
// ************************************************************
#ifndef GammaRayTelCalorimeterSD_h
#define GammaRayTelCalorimeterSD_h 1
#include "G4VSensitiveDetector.hh"
#include "globals.hh"
class GammaRayTelDetectorConstruction;
class G4HCofThisEvent;
class G4Step;
#include "GammaRayTelCalorimeterHit.hh"
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo....
class GammaRayTelCalorimeterSD : public G4VSensitiveDetector
{
public:
GammaRayTelCalorimeterSD(G4String, GammaRayTelDetectorConstruction* );
~GammaRayTelCalorimeterSD();
void Initialize(G4HCofThisEvent*);
G4bool ProcessHits(G4Step* astep,G4TouchableHistory* ROHist);
void EndOfEvent(G4HCofThisEvent*);
void clear();
void DrawAll();
void PrintAll();
private:
GammaRayTelCalorimeterHitsCollection* CalorimeterCollection;
GammaRayTelDetectorConstruction* Detector;
G4int (*ChitXID)[12];
G4int (*ChitYID)[12];
G4int NbOfCALLayers;
G4int NbOfCALBars;
};
#endif
@@ -5,8 +5,8 @@
// based on the Program) you indicate your acceptance of this statement,
// and all its terms.
//
// $Id: GammaRayTelDetectorConstruction.hh,v 1.4 2000/12/06 16:53:13 flongo Exp $
// GEANT4 tag $Name: geant4-03-00 $
// $Id: GammaRayTelDetectorConstruction.hh,v 1.5 2001/03/05 13:58:20 flongo Exp $
// GEANT4 tag $Name: geant4-03-01 $
// ------------------------------------------------------------
// GEANT 4 class header file
// CERN Geneva Switzerland
@@ -31,8 +31,10 @@ class G4VPhysicalVolume;
class G4Material;
class G4UniformMagField;
class GammaRayTelDetectorMessenger;
class GammaRayTelPayloadSD;
class GammaRayTelPayloadROGeometry;
class GammaRayTelTrackerSD;
class GammaRayTelAnticoincidenceSD;
class GammaRayTelCalorimeterSD;
class GammaRayTelTrackerROGeometry;
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo....
@@ -108,7 +110,8 @@ public:
G4int GetNbOfCALBars() {return NbOfCALBars;};
G4double GetACDThickness() {return ACDThickness;};
G4int GetNbOfACDTopTiles() {return NbOfACDTopTiles;};
G4int GetNbOfACDLateralTiles() {return NbOfACDLateralTiles;};
private:
@@ -134,7 +137,11 @@ private:
G4int NbOfCALBars;
G4double CALSizeXY;
G4double CALSizeZ;
G4double CALBarX;
G4double CALBarY;
G4double CALBarZ;
G4double ACDThickness;
G4double ACTSizeXY;
G4double ACTSizeZ;
@@ -147,6 +154,10 @@ private:
G4double ACL2SizeY;
G4double ACL2SizeZ;
G4int NbOfACDLateralTiles;
G4int NbOfACDTopTiles;
G4double TilesSeparation;
G4double ACDTKRDistance;
G4double CALTKRDistance;
@@ -208,10 +219,20 @@ private:
G4LogicalVolume* logicTKRDetectorY;
G4VPhysicalVolume* physiTKRDetectorY;
G4Box* solidCALDetector; // Calorimeter PLANE
G4LogicalVolume* logicCALDetector;
G4Box* solidCALLayerX; // Calorimeter PLANE X
G4LogicalVolume* logicCALLayerX;
G4VPhysicalVolume* physiCALLayerX;
G4Box* solidCALLayerY; // Calorimeter PLANE Y
G4LogicalVolume* logicCALLayerY;
G4VPhysicalVolume* physiCALLayerY;
G4Box* solidCALDetectorX; // Calorimeter DETECTOR X
G4LogicalVolume* logicCALDetectorX;
G4VPhysicalVolume* physiCALDetectorX;
G4Box* solidCALDetectorY; // Calorimeter DETECTOR Y
G4LogicalVolume* logicCALDetectorY;
G4VPhysicalVolume* physiCALDetectorY;
G4Box* solidPlane; // Support Plane
@@ -225,7 +246,10 @@ private:
G4UniformMagField* magField; //pointer to the magnetic field
GammaRayTelDetectorMessenger* detectorMessenger; //pointer to the Messenger
GammaRayTelPayloadSD* payloadSD; //pointer to the sensitive detector
GammaRayTelTrackerSD* trackerSD; //pointer to the sensitive detector
GammaRayTelCalorimeterSD* calorimeterSD; //pointer to the sensitive detector
GammaRayTelAnticoincidenceSD* anticoincidenceSD; //pointer to the sensitive detector
private:
@@ -241,7 +265,7 @@ inline void GammaRayTelDetectorConstruction::ComputePayloadParameters()
// Compute derived parameters of the payload
TKRSupportThickness =TKRLayerDistance -2.*TKRSiliconThickness
- TKRViewsDistance;
- TKRViewsDistance - ConverterThickness;
TKRSizeXY = NbOfTKRTiles*TKRSiliconTileXY + (NbOfTKRTiles+1)*TilesSeparation;
TKRSizeZ = NbOfTKRLayers*TKRLayerDistance;
@@ -259,6 +283,10 @@ inline void GammaRayTelDetectorConstruction::ComputePayloadParameters()
CALSizeXY = TKRSizeXY;
CALSizeZ = 2.*NbOfCALLayers*CALBarThickness;
CALBarX = CALSizeXY;
CALBarY = CALSizeXY/(NbOfCALBars);
CALBarZ = CALBarThickness;
ACTSizeXY = TKRSizeXY + 2*ACDTKRDistance + 2*ACDThickness;
ACTSizeZ = ACDThickness;
@@ -6,7 +6,7 @@
// and all its terms.
//
// $Id: GammaRayTelDetectorMessenger.hh,v 1.2 2000/11/15 20:27:38 flongo Exp $
// GEANT4 tag $Name: geant4-03-00 $
// GEANT4 tag $Name: geant4-03-01 $
//
// ------------------------------------------------------------
// GEANT 4 class header file
@@ -7,7 +7,7 @@
// and all its terms.
//
// $Id: GammaRayTelDummySD.hh,v 1.1 2000/11/15 20:27:39 flongo Exp $
// GEANT4 tag $Name: geant4-03-00 $
// GEANT4 tag $Name: geant4-03-01 $
// ------------------------------------------------------------
// GEANT 4 class header file
// CERN Geneva Switzerland
@@ -5,8 +5,8 @@
// based on the Program) you indicate your acceptance of this statement,
// and all its terms.
//
// $Id: GammaRayTelEventAction.hh,v 1.3 2000/12/06 16:53:13 flongo Exp $
// GEANT4 tag $Name: geant4-03-00 $
// $Id: GammaRayTelEventAction.hh,v 1.4 2001/03/05 13:58:20 flongo Exp $
// GEANT4 tag $Name: geant4-03-01 $
// ------------------------------------------------------------
// GEANT 4 class header file
// CERN Geneva Switzerland
@@ -37,25 +37,28 @@
class GammaRayTelEventAction : public G4UserEventAction
{
public:
public:
#ifdef G4ANALYSIS_USE
GammaRayTelEventAction(GammaRayTelAnalysisManager* analysisMgr);
#else
GammaRayTelEventAction();
#endif
virtual ~GammaRayTelEventAction();
public:
public:
virtual void BeginOfEventAction(const G4Event*);
virtual void EndOfEventAction(const G4Event*);
void SetDrawFlag (G4String val) {drawFlag = val;};
private:
G4int trackerCollID;
G4String drawFlag;
private:
G4int trackerCollID;
G4int calorimeterCollID;
G4int anticoincidenceCollID;
G4String drawFlag;
#ifdef G4ANALYSIS_USE
GammaRayTelAnalysisManager* analysisManager;
GammaRayTelAnalysisManager* analysisManager;
#endif
};
@@ -6,7 +6,7 @@
// and all its terms.
//
// $Id: GammaRayTelPhysicsList.hh,v 1.2 2000/11/15 20:27:39 flongo Exp $
// GEANT4 tag $Name: geant4-03-00 $
// GEANT4 tag $Name: geant4-03-01 $
// ------------------------------------------------------------
// GEANT 4 class header file
// CERN Geneva Switzerland
@@ -6,7 +6,7 @@
// and all its terms.
//
// $Id: GammaRayTelPrimaryGeneratorAction.hh,v 1.3 2000/12/06 16:53:13 flongo Exp $
// GEANT4 tag $Name: geant4-03-00 $
// GEANT4 tag $Name: geant4-03-01 $
//
// ------------------------------------------------------------
// GEANT 4 class header file
@@ -6,7 +6,7 @@
// and all its terms.
//
// $Id: GammaRayTelPrimaryGeneratorMessenger.hh,v 1.2 2000/11/15 20:27:39 flongo Exp $
// GEANT4 tag $Name: geant4-03-00 $
// GEANT4 tag $Name: geant4-03-01 $
//
//
// ------------------------------------------------------------
@@ -6,7 +6,7 @@
// and all its terms.
//
// $Id: GammaRayTelRunAction.hh,v 1.3 2000/12/06 16:53:13 flongo Exp $
// GEANT4 tag $Name: geant4-03-00 $
// GEANT4 tag $Name: geant4-03-01 $
// ------------------------------------------------------------
// GEANT 4 class header file
// CERN Geneva Switzerland
@@ -5,8 +5,8 @@
// based on the Program) you indicate your acceptance of this statement,
// and all its terms.
//
// $Id: GammaRayTelPayloadHit.hh,v 1.2 2000/11/15 20:27:39 flongo Exp $
// GEANT4 tag $Name: geant4-03-00 $
// $Id: GammaRayTelTrackerHit.hh,v 1.1 2001/03/05 13:58:20 flongo Exp $
// GEANT4 tag $Name: geant4-03-01 $
// ------------------------------------------------------------
// GEANT 4 class header file
// CERN Geneva Switzerland
@@ -14,14 +14,14 @@
// For information related to this code contact:
// CERN, IT Division, ASD group
//
// ------------ GammaRayTelPayloadHit ------
// ------------ GammaRayTelTrackerHit ------
// by R.Giannitrapani, F.Longo & G.Santin (13 nov 2000)
//
// ************************************************************
// This Class describe the hits on the Payload
// This Class describe the hits on the Tracker
#ifndef GammaRayTelPayloadHit_h
#define GammaRayTelPayloadHit_h 1
#ifndef GammaRayTelTrackerHit_h
#define GammaRayTelTrackerHit_h 1
#include "G4VHit.hh"
#include "G4THitsCollection.hh"
@@ -31,15 +31,15 @@
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo....
class GammaRayTelPayloadHit : public G4VHit
class GammaRayTelTrackerHit : public G4VHit
{
public:
GammaRayTelPayloadHit();
~GammaRayTelPayloadHit();
GammaRayTelPayloadHit(const GammaRayTelPayloadHit&);
const GammaRayTelPayloadHit& operator=(const GammaRayTelPayloadHit&);
int operator==(const GammaRayTelPayloadHit&) const;
GammaRayTelTrackerHit();
~GammaRayTelTrackerHit();
GammaRayTelTrackerHit(const GammaRayTelTrackerHit&);
const GammaRayTelTrackerHit& operator=(const GammaRayTelTrackerHit&);
int operator==(const GammaRayTelTrackerHit&) const;
inline void* operator new(size_t);
inline void operator delete(void*);
@@ -73,24 +73,24 @@ public:
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo....
typedef G4THitsCollection<GammaRayTelPayloadHit> GammaRayTelPayloadHitsCollection;
typedef G4THitsCollection<GammaRayTelTrackerHit> GammaRayTelTrackerHitsCollection;
extern G4Allocator<GammaRayTelPayloadHit> GammaRayTelPayloadHitAllocator;
extern G4Allocator<GammaRayTelTrackerHit> GammaRayTelTrackerHitAllocator;
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo....
inline void* GammaRayTelPayloadHit::operator new(size_t)
inline void* GammaRayTelTrackerHit::operator new(size_t)
{
void* aHit;
aHit = (void*) GammaRayTelPayloadHitAllocator.MallocSingle();
aHit = (void*) GammaRayTelTrackerHitAllocator.MallocSingle();
return aHit;
}
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo....
inline void GammaRayTelPayloadHit::operator delete(void* aHit)
inline void GammaRayTelTrackerHit::operator delete(void* aHit)
{
GammaRayTelPayloadHitAllocator.FreeSingle((GammaRayTelPayloadHit*) aHit);
GammaRayTelTrackerHitAllocator.FreeSingle((GammaRayTelTrackerHit*) aHit);
}
#endif
@@ -5,8 +5,8 @@
// based on the Program) you indicate your acceptance of this statement,
// and all its terms.
//
// $Id: GammaRayTelPayloadROGeometry.hh,v 1.1 2000/11/15 20:27:39 flongo Exp $
// GEANT4 tag $Name: geant4-03-00 $
// $Id: GammaRayTelTrackerROGeometry.hh,v 1.1 2001/03/05 13:58:21 flongo Exp $
// GEANT4 tag $Name: geant4-03-01 $
// ------------------------------------------------------------
// GEANT 4 class header file
// CERN Geneva Switzerland
@@ -14,25 +14,25 @@
// For information related to this code contact:
// CERN, IT Division, ASD group
//
// ------------ GammaRayTelPayloadROGeometry ------
// ------------ GammaRayTelTrackerROGeometry ------
// by F.Longo, R.Giannitrapani & G.Santin (13 nov 2000)
//
// ************************************************************
#ifndef GammaRayTelPayloadROGeometry_h
#define GammaRayTelPayloadROGeometry_h 1
#ifndef GammaRayTelTrackerROGeometry_h
#define GammaRayTelTrackerROGeometry_h 1
#include "G4VReadOutGeometry.hh"
class GammaRayTelDetectorConstruction;
class GammaRayTelPayloadROGeometry : public G4VReadOutGeometry
class GammaRayTelTrackerROGeometry : public G4VReadOutGeometry
{
public:
GammaRayTelPayloadROGeometry();
GammaRayTelPayloadROGeometry(G4String);
GammaRayTelPayloadROGeometry(G4String, GammaRayTelDetectorConstruction*);
~GammaRayTelPayloadROGeometry();
GammaRayTelTrackerROGeometry();
GammaRayTelTrackerROGeometry(G4String);
GammaRayTelTrackerROGeometry(G4String, GammaRayTelDetectorConstruction*);
~GammaRayTelTrackerROGeometry();
private:
G4VPhysicalVolume* Build();
@@ -5,8 +5,8 @@
// based on the Program) you indicate your acceptance of this statement,
// and all its terms.
//
// $Id: GammaRayTelPayloadSD.hh,v 1.3 2000/11/24 16:56:59 flongo Exp $
// GEANT4 tag $Name: geant4-03-00 $
// $Id: GammaRayTelTrackerSD.hh,v 1.1 2001/03/05 13:58:21 flongo Exp $
// GEANT4 tag $Name: geant4-03-01 $
// ------------------------------------------------------------
// GEANT 4 class header file
// CERN Geneva Switzerland
@@ -14,13 +14,13 @@
// For information related to this code contact:
// CERN, IT Division, ASD group
//
// ------------ GammaRayTelPayloadSD ------
// ------------ GammaRayTelTrackerSD ------
// by R.Giannitrapani, F.Longo & G.Santin (13 nov 2000)
//
// ************************************************************
#ifndef GammaRayTelPayloadSD_h
#define GammaRayTelPayloadSD_h 1
#ifndef GammaRayTelTrackerSD_h
#define GammaRayTelTrackerSD_h 1
#include "G4VSensitiveDetector.hh"
#include "globals.hh"
@@ -28,16 +28,16 @@
class GammaRayTelDetectorConstruction;
class G4HCofThisEvent;
class G4Step;
#include "GammaRayTelPayloadHit.hh"
#include "GammaRayTelTrackerHit.hh"
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo....
class GammaRayTelPayloadSD : public G4VSensitiveDetector
class GammaRayTelTrackerSD : public G4VSensitiveDetector
{
public:
GammaRayTelPayloadSD(G4String, GammaRayTelDetectorConstruction* );
~GammaRayTelPayloadSD();
GammaRayTelTrackerSD(G4String, GammaRayTelDetectorConstruction* );
~GammaRayTelTrackerSD();
void Initialize(G4HCofThisEvent*);
G4bool ProcessHits(G4Step* astep,G4TouchableHistory* ROHist);
@@ -48,10 +48,10 @@ public:
private:
GammaRayTelPayloadHitsCollection* PayloadCollection;
GammaRayTelTrackerHitsCollection* TrackerCollection;
GammaRayTelDetectorConstruction* Detector;
G4int (*HitXID)[30];
G4int (*HitYID)[30];
G4int (*ThitXID)[30];
G4int (*ThitYID)[30];
G4int NbOfTKRLayers;
G4int NbOfTKRStrips;
@@ -6,7 +6,7 @@
// and all its terms.
//
// $Id: GammaRayTelVisManager.hh,v 1.2 2000/11/15 20:27:39 flongo Exp $
// GEANT4 tag $Name: geant4-03-00 $
// GEANT4 tag $Name: geant4-03-01 $
// ------------------------------------------------------------
// GEANT 4 class header file
// CERN Geneva Switzerland
@@ -6,7 +6,7 @@
// and all its terms.
//
// $Id: GammaRayTelAnalysisManager.cc,v 1.1 2000/12/06 16:53:13 flongo Exp $
// GEANT4 tag $Name: geant4-03-00 $
// GEANT4 tag $Name: geant4-03-01 $
// ------------------------------------------------------------
// GEANT 4 class implementation file
// CERN Geneva Switzerland
@@ -6,7 +6,7 @@
// and all its terms.
//
// $Id: GammaRayTelAnalysisMessenger.cc,v 1.1 2000/12/06 16:53:13 flongo Exp $
// GEANT4 tag $Name: geant4-03-00 $
// GEANT4 tag $Name: geant4-03-01 $
//
// ------------------------------------------------------------
// GEANT 4 class implementation file
@@ -0,0 +1,92 @@
// 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: GammaRayTelAnticoincidenceHit.cc,v 1.1 2001/03/05 13:58:22 flongo Exp $
// GEANT4 tag $Name: geant4-03-01 $
// ------------------------------------------------------------
// GEANT 4 class implementation file
// CERN Geneva Switzerland
//
// For information related to this code contact:
// CERN, IT Division, ASD group
//
// ------------ GammaRayTelAnticoincidenceHit ------
// by R.Giannitrapani, F.Longo & G.Santin (13 nov 2000)
//
// ************************************************************
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo....
#include "GammaRayTelAnticoincidenceHit.hh"
G4Allocator<GammaRayTelAnticoincidenceHit> GammaRayTelAnticoincidenceHitAllocator;
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo....
GammaRayTelAnticoincidenceHit::GammaRayTelAnticoincidenceHit()
{
EdepACD = 0.;
ACDTileNumber = 0;
IsACDPlane = 0;
pos = 0.;
}
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo....
GammaRayTelAnticoincidenceHit::~GammaRayTelAnticoincidenceHit()
{;}
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo....
GammaRayTelAnticoincidenceHit::GammaRayTelAnticoincidenceHit(const GammaRayTelAnticoincidenceHit& right)
{
EdepACD = right.EdepACD;
ACDTileNumber = right.ACDTileNumber;
IsACDPlane = right.IsACDPlane;
pos = right.pos;
}
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo....
const GammaRayTelAnticoincidenceHit& GammaRayTelAnticoincidenceHit::operator=(const GammaRayTelAnticoincidenceHit& right)
{
EdepACD = right.EdepACD;
ACDTileNumber = right.ACDTileNumber;
IsACDPlane = right.IsACDPlane;
pos = right.pos;
return *this;
}
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo....
int GammaRayTelAnticoincidenceHit::operator==(const GammaRayTelAnticoincidenceHit& right) const
{
return 0;
}
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo....
void GammaRayTelAnticoincidenceHit::Draw()
{;}
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo....
void GammaRayTelAnticoincidenceHit::Print()
{;}
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo....
@@ -0,0 +1,217 @@
// 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: GammaRayTelAnticoincidenceSD.cc,v 1.1 2001/03/05 13:58:22 flongo Exp $
// GEANT4 tag $Name: geant4-03-01 $
// ------------------------------------------------------------
// GEANT 4 class implementation file
// CERN Geneva Switzerland
//
// For information related to this code contact:
// CERN, IT Division, ASD group
//
// ------------ GammaRayTelAnticoincidenceSD ------
// by R.Giannitrapani, F.Longo & G.Santin (13 nov 2000)
//
// ************************************************************
#include "GammaRayTelAnticoincidenceSD.hh"
#include "GammaRayTelAnticoincidenceHit.hh"
#include "GammaRayTelDetectorConstruction.hh"
#include "G4VPhysicalVolume.hh"
#include "G4Step.hh"
#include "G4VTouchable.hh"
#include "G4TouchableHistory.hh"
#include "G4SDManager.hh"
#include "G4ios.hh"
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo....
GammaRayTelAnticoincidenceSD::GammaRayTelAnticoincidenceSD(G4String name,
GammaRayTelDetectorConstruction* det)
:G4VSensitiveDetector(name),Detector(det)
{
NbOfACDLateralTiles = Detector->GetNbOfACDLateralTiles();
NbOfACDTopTiles = Detector->GetNbOfACDTopTiles();
G4cout << NbOfACDLateralTiles << " LAT " << G4endl;
G4cout << NbOfACDTopTiles << " TOP " << G4endl;
HitLateralID = new G4int[NbOfACDLateralTiles];
HitTopID = new G4int[NbOfACDTopTiles];
collectionName.insert("AnticoincidenceCollection");
}
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo....
GammaRayTelAnticoincidenceSD::~GammaRayTelAnticoincidenceSD()
{
delete [] HitLateralID;
delete [] HitTopID;
}
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo....
void GammaRayTelAnticoincidenceSD::Initialize(G4HCofThisEvent*HCE)
{
AnticoincidenceCollection = new GammaRayTelAnticoincidenceHitsCollection
(SensitiveDetectorName,collectionName[0]);
for (G4int i=0;i<NbOfACDLateralTiles;i++)
{
HitLateralID[i] = -1;
};
for (G4int j=0;j<NbOfACDTopTiles;j++)
{
HitTopID[j] = -1;
};
}
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo....
G4bool GammaRayTelAnticoincidenceSD::ProcessHits(G4Step* aStep,G4TouchableHistory* ROhist)
{
G4double edep = aStep->GetTotalEnergyDeposit();
if ((edep/keV == 0.)) return false;
// This TouchableHistory is used to obtain the physical volume
// of the hit
G4TouchableHistory* theTouchable
= (G4TouchableHistory*)(aStep->GetPreStepPoint()->GetTouchable());
G4VPhysicalVolume* acd_tile = theTouchable->GetVolume();
G4int ACDTileNumber=acd_tile->GetCopyNo();
G4String ACDTileName = acd_tile->GetName();
G4cout << ACDTileName << " " << edep/keV << G4endl;
if (ACDTileName == "ACT" )
// The hit is on an top ACD tile (ACDType 0)
{
// This is a new hit
if (HitTopID[ACDTileNumber]==-1)
{
GammaRayTelAnticoincidenceHit*
AnticoincidenceHit = new GammaRayTelAnticoincidenceHit;
AnticoincidenceHit->SetACDType(0);
AnticoincidenceHit->AddEnergy(edep);
AnticoincidenceHit->SetPos(aStep->GetPreStepPoint()->GetPosition());
AnticoincidenceHit->SetACDTileNumber(ACDTileNumber);
HitTopID[ACDTileNumber] =
AnticoincidenceCollection->insert(AnticoincidenceHit) -1;
}
else // This is not new
{
(*AnticoincidenceCollection)
[HitTopID[ACDTileNumber]]->AddEnergy(edep);
}
}
if (ACDTileName == "ACL1")
// The hit is on an lateral (left-right) ACD tile (ACDType 1)
{
// This is a new hit
if (HitLateralID[ACDTileNumber]==-1)
{
GammaRayTelAnticoincidenceHit*
AnticoincidenceHit = new GammaRayTelAnticoincidenceHit;
AnticoincidenceHit->SetACDType(1);
AnticoincidenceHit->AddEnergy(edep);
AnticoincidenceHit->SetPos(aStep->GetPreStepPoint()->GetPosition());
AnticoincidenceHit->SetACDTileNumber(ACDTileNumber);
HitLateralID[ACDTileNumber] =
AnticoincidenceCollection->insert(AnticoincidenceHit) -1;
}
else // This is not new
{
(*AnticoincidenceCollection)
[HitLateralID[ACDTileNumber]]->AddEnergy(edep);
}
}
if (ACDTileName == "ACL2")
// The hit is on an lateral (rear - front) ACD tile (ACDType 2)
{
// This is a new hit
if (HitLateralID[ACDTileNumber]==-1)
{
GammaRayTelAnticoincidenceHit*
AnticoincidenceHit = new GammaRayTelAnticoincidenceHit;
AnticoincidenceHit->SetACDType(2);
AnticoincidenceHit->AddEnergy(edep);
AnticoincidenceHit->SetPos(aStep->GetPreStepPoint()->GetPosition());
AnticoincidenceHit->SetACDTileNumber(ACDTileNumber);
HitLateralID[ACDTileNumber] =
AnticoincidenceCollection->insert(AnticoincidenceHit) -1;
}
else // This is not new
{
(*AnticoincidenceCollection)
[HitLateralID[ACDTileNumber]]->AddEnergy(edep);
}
}
return true;
}
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo....
void GammaRayTelAnticoincidenceSD::EndOfEvent(G4HCofThisEvent* HCE)
{
static G4int HCID = -1;
if(HCID<0)
{
HCID = G4SDManager::GetSDMpointer()->GetCollectionID(collectionName[0]);
}
HCE->AddHitsCollection(HCID,AnticoincidenceCollection);
for (G4int i=0;i<NbOfACDLateralTiles;i++)
{
HitLateralID[i] = -1;
};
for (G4int j=0;j<NbOfACDTopTiles;j++)
{
HitTopID[j] = -1;
};
}
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo....
void GammaRayTelAnticoincidenceSD::clear()
{}
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo....
void GammaRayTelAnticoincidenceSD::DrawAll()
{}
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo....
void GammaRayTelAnticoincidenceSD::PrintAll()
{}
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo....
@@ -0,0 +1,95 @@
// 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: GammaRayTelCalorimeterHit.cc,v 1.1 2001/03/05 13:58:22 flongo Exp $
// GEANT4 tag $Name: geant4-03-01 $
// ------------------------------------------------------------
// GEANT 4 class implementation file
// CERN Geneva Switzerland
//
// For information related to this code contact:
// CERN, IT Division, ASD group
//
// ------------ GammaRayTelCalorimeterHit ------
// by R.Giannitrapani, F.Longo & G.Santin (13 nov 2000)
//
// ************************************************************
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo....
#include "GammaRayTelCalorimeterHit.hh"
G4Allocator<GammaRayTelCalorimeterHit> GammaRayTelCalorimeterHitAllocator;
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo....
GammaRayTelCalorimeterHit::GammaRayTelCalorimeterHit()
{
EdepCAL = 0.;
CALBarNumber = 0;
CALPlaneNumber = 0;
IsCALPlane = 0;
pos = 0.;
}
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo....
GammaRayTelCalorimeterHit::~GammaRayTelCalorimeterHit()
{;}
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo....
GammaRayTelCalorimeterHit::GammaRayTelCalorimeterHit(const GammaRayTelCalorimeterHit& right)
{
EdepCAL = right.EdepCAL;
CALBarNumber = right.CALBarNumber;
CALPlaneNumber = right.CALPlaneNumber;
IsCALPlane = right.IsCALPlane;
pos = right.pos;
}
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo....
const GammaRayTelCalorimeterHit& GammaRayTelCalorimeterHit::operator=(const GammaRayTelCalorimeterHit& right)
{
EdepCAL = right.EdepCAL;
CALBarNumber = right.CALBarNumber;
CALPlaneNumber = right.CALPlaneNumber;
IsCALPlane = right.IsCALPlane;
pos = right.pos;
return *this;
}
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo....
int GammaRayTelCalorimeterHit::operator==(const GammaRayTelCalorimeterHit& right) const
{
return 0;
}
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo....
void GammaRayTelCalorimeterHit::Draw()
{;}
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo....
void GammaRayTelCalorimeterHit::Print()
{;}
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo....
@@ -0,0 +1,194 @@
// 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: GammaRayTelCalorimeterSD.cc,v 1.1 2001/03/05 13:58:23 flongo Exp $
// GEANT4 tag $Name: geant4-03-01 $
// ------------------------------------------------------------
// GEANT 4 class implementation file
// CERN Geneva Switzerland
//
// For information related to this code contact:
// CERN, IT Division, ASD group
//
// ------------ GammaRayTelCalorimeterSD ------
// by R.Giannitrapani, F.Longo & G.Santin (13 nov 2000)
//
// ************************************************************
#include "GammaRayTelCalorimeterSD.hh"
#include "GammaRayTelCalorimeterHit.hh"
#include "GammaRayTelDetectorConstruction.hh"
#include "G4VPhysicalVolume.hh"
#include "G4Step.hh"
#include "G4VTouchable.hh"
#include "G4TouchableHistory.hh"
#include "G4SDManager.hh"
#include "G4ios.hh"
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo....
GammaRayTelCalorimeterSD::GammaRayTelCalorimeterSD(G4String name,
GammaRayTelDetectorConstruction* det)
:G4VSensitiveDetector(name),Detector(det)
{
NbOfCALBars = Detector->GetNbOfCALBars();
NbOfCALLayers = Detector->GetNbOfCALLayers();
G4cout << NbOfCALBars << " bars " << G4endl;
G4cout << NbOfCALLayers << " layers " << G4endl;
ChitXID = new G4int[NbOfCALBars][12];
ChitYID = new G4int[NbOfCALBars][12];
collectionName.insert("CalorimeterCollection");
}
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo....
GammaRayTelCalorimeterSD::~GammaRayTelCalorimeterSD()
{
delete [] ChitXID;
delete [] ChitYID;
}
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo....
void GammaRayTelCalorimeterSD::Initialize(G4HCofThisEvent*HCE)
{
CalorimeterCollection = new GammaRayTelCalorimeterHitsCollection
(SensitiveDetectorName,collectionName[0]);
for (G4int i=0;i<NbOfCALBars;i++)
for (G4int j=0;j<NbOfCALLayers;j++)
{
ChitXID[i][j] = -1;
ChitYID[i][j] = -1;
};
}
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo....
G4bool GammaRayTelCalorimeterSD::ProcessHits(G4Step* aStep,G4TouchableHistory* ROhist)
{
G4double edep = aStep->GetTotalEnergyDeposit();
if ((edep/keV == 0.)) return false;
// This TouchableHistory is used to obtain the physical volume
// of the hit
G4TouchableHistory* theTouchable
= (G4TouchableHistory*)(aStep->GetPreStepPoint()->GetTouchable());
G4VPhysicalVolume* cal_bar = theTouchable->GetVolume();
G4VPhysicalVolume* cal_plane = cal_bar->GetMother();
G4int CALBarNumber=cal_bar->GetCopyNo();
G4String CALBarName = cal_bar->GetName();
G4int PlaneNumber = 0;
PlaneNumber=cal_plane->GetCopyNo();
G4String PlaneName = cal_plane->GetName();
if (PlaneName == "CALLayerX" )
// The hit is on an X CsI plane
{
// This is a new hit
if (ChitXID[CALBarNumber][PlaneNumber]==-1)
{
GammaRayTelCalorimeterHit* CalorimeterHit = new GammaRayTelCalorimeterHit;
CalorimeterHit->SetCALType(1);
CalorimeterHit->AddEnergy(edep);
CalorimeterHit->SetPos(aStep->GetPreStepPoint()->GetPosition());
CalorimeterHit->SetCALPlaneNumber(PlaneNumber);
CalorimeterHit->SetCALBarNumber(CALBarNumber);
ChitXID[CALBarNumber][PlaneNumber] =
CalorimeterCollection->insert(CalorimeterHit) -1;
}
else // This is not new
{
(*CalorimeterCollection)
[ChitXID[CALBarNumber][PlaneNumber]]->AddEnergy(edep);
}
}
if (PlaneName == "CALLayerY")
// The hit is on an Y CsI plane
{
// This is a new hit
if (ChitYID[CALBarNumber][PlaneNumber]==-1)
{
GammaRayTelCalorimeterHit* CalorimeterHit
= new GammaRayTelCalorimeterHit;
CalorimeterHit->SetCALType(0);
CalorimeterHit->AddEnergy(edep);
CalorimeterHit->SetPos(aStep->GetPreStepPoint()->GetPosition());
CalorimeterHit->SetCALPlaneNumber(PlaneNumber);
CalorimeterHit->SetCALBarNumber(CALBarNumber);
ChitYID[CALBarNumber][PlaneNumber] =
CalorimeterCollection->insert(CalorimeterHit)-1;
}
else // This is not new
{
(*CalorimeterCollection)
[ChitYID[CALBarNumber][PlaneNumber]]->AddEnergy(edep);
}
}
return true;
}
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo....
void GammaRayTelCalorimeterSD::EndOfEvent(G4HCofThisEvent* HCE)
{
static G4int HCID = -1;
if(HCID<0)
{
HCID = G4SDManager::GetSDMpointer()->GetCollectionID(collectionName[0]);
}
HCE->AddHitsCollection(HCID,CalorimeterCollection);
for (G4int i=0;i<NbOfCALBars;i++)
for (G4int j=0;j<NbOfCALLayers;j++)
{
ChitXID[i][j] = -1;
ChitYID[i][j] = -1;
};
}
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo....
void GammaRayTelCalorimeterSD::clear()
{}
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo....
void GammaRayTelCalorimeterSD::DrawAll()
{}
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo....
void GammaRayTelCalorimeterSD::PrintAll()
{}
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo....
@@ -5,8 +5,8 @@
// based on the Program) you indicate your acceptance of this statement,
// and all its terms.
//
// $Id: GammaRayTelDetectorConstruction.cc,v 1.4 2000/12/06 16:53:13 flongo Exp $
// GEANT4 tag $Name: geant4-03-00 $
// $Id: GammaRayTelDetectorConstruction.cc,v 1.5 2001/03/05 13:58:23 flongo Exp $
// GEANT4 tag $Name: geant4-03-01 $
// ------------------------------------------------------------
// GEANT 4 class implementation file
// CERN Geneva Switzerland
@@ -24,8 +24,11 @@
#include "GammaRayTelDetectorConstruction.hh"
#include "GammaRayTelDetectorMessenger.hh"
#include "GammaRayTelPayloadSD.hh"
#include "GammaRayTelPayloadROGeometry.hh"
#include "GammaRayTelTrackerSD.hh"
#include "GammaRayTelTrackerROGeometry.hh"
#include "GammaRayTelAnticoincidenceSD.hh"
#include "GammaRayTelCalorimeterSD.hh"
#include "G4Material.hh"
#include "G4Box.hh"
@@ -57,8 +60,10 @@ GammaRayTelDetectorConstruction::GammaRayTelDetectorConstruction()
solidTKRDetectorX(0),logicTKRDetectorX(0),
solidTKRDetectorY(0),logicTKRDetectorY(0),
physiTKRDetectorX(0),physiTKRDetectorY(0),
solidCALDetector(0),logicCALDetector(0),
physiCALDetectorX(0),physiCALDetectorY(0),
solidCALDetectorX(0),logicCALDetectorX(0),physiCALDetectorX(0),
solidCALDetectorY(0),logicCALDetectorY(0),physiCALDetectorY(0),
solidCALLayerX(0),logicCALLayerX(0),physiCALLayerX(0),
solidCALLayerY(0),logicCALLayerY(0),physiCALLayerY(0),
solidPlane(0),logicPlane(0),physiPlane(0)
{
@@ -77,6 +82,8 @@ GammaRayTelDetectorConstruction::GammaRayTelDetectorConstruction()
NbOfCALBars = 12;
NbOfCALLayers = 5;
ACDThickness = 1.*cm;
NbOfACDTopTiles = 1;
NbOfACDLateralTiles = 2;
TilesSeparation = 100.*micrometer;
ACDTKRDistance = 5.*cm;
@@ -246,427 +253,514 @@ G4VPhysicalVolume* GammaRayTelDetectorConstruction::ConstructPayload()
solidTKRDetectorX=0;logicTKRDetectorX=0;
solidTKRDetectorY=0;logicTKRDetectorY=0;
physiTKRDetectorX=0;physiTKRDetectorY=0;
solidCALDetector=0;logicCALDetector=0;
physiCALDetectorX=0;physiCALDetectorY=0;
solidCALDetectorX=0;logicCALDetectorX=0;physiCALDetectorX=0;
solidCALDetectorY=0;logicCALDetectorY=0;physiCALDetectorY=0;
solidPlane=0;logicPlane=0;physiPlane=0;
// if (PayloadSizeZ > 0.)
// {
//
// Payload
//
solidPayload = new G4Box("Payload",
PayloadSizeXY/2,
PayloadSizeXY/2,
PayloadSizeZ/2);
logicPayload = new G4LogicalVolume(solidPayload,
defaultMaterial,
"Payload");
physiPayload = new G4PVPlacement(0,
G4ThreeVector(),
"Payload",
logicPayload,
physiWorld,
false,
0);
//
// Calorimeter (CAL)
//
solidCAL = new G4Box("CAL",
CALSizeXY/2,CALSizeXY/2,CALSizeZ/2);
logicCAL = new G4LogicalVolume(solidCAL,
defaultMaterial,
"CAL");
physiCAL = new G4PVPlacement(0,
G4ThreeVector(0,0,
-PayloadSizeZ/2+CALSizeZ/2),
"CAL",
logicCAL,
physiPayload,
false,
0);
//
// Tracker (TKR)
//
// Payload
//
solidPayload = new G4Box("Payload",
PayloadSizeXY/2,
PayloadSizeXY/2,
PayloadSizeZ/2);
logicPayload = new G4LogicalVolume(solidPayload,
defaultMaterial,
"Payload");
physiPayload = new G4PVPlacement(0,
G4ThreeVector(),
"Payload",
logicPayload,
physiWorld,
false,
0);
//
// Calorimeter (CAL)
//
solidCAL = new G4Box("CAL",
CALSizeXY/2,CALSizeXY/2,CALSizeZ/2);
logicCAL = new G4LogicalVolume(solidCAL,
defaultMaterial,
"CAL");
physiCAL = new G4PVPlacement(0,
G4ThreeVector(0,0,
-PayloadSizeZ/2+CALSizeZ/2),
"CAL",
logicCAL,
physiPayload,
false,
0);
//
// Tracker (TKR)
//
solidTKR = new G4Box("TKR",
solidTKR = new G4Box("TKR",
TKRSizeXY/2,TKRSizeXY/2,TKRSizeZ/2);
logicTKR = new G4LogicalVolume(solidTKR,
defaultMaterial,
"TKR");
physiTKR = new G4PVPlacement(0,
G4ThreeVector(0,0,
-PayloadSizeZ/2+CALSizeZ+
CALTKRDistance+TKRSizeZ/2),
"TKR",
logicTKR,
physiPayload,
false,
0);
//
// Anticoincidence Top (ACT)
//
solidACT = new G4Box("ACT",
ACTSizeXY/2,ACTSizeXY/2,ACTSizeZ/2);
logicACT = new G4LogicalVolume(solidACT,ACDMaterial,"ACT");
physiACT = new G4PVPlacement(0,
G4ThreeVector(0,0,
-PayloadSizeZ/2+CALSizeZ+
CALTKRDistance+TKRSizeZ+
ACDTKRDistance+ACTSizeZ/2),
"ACT",
logicACT,
physiPayload,
false,
0);
//
// Anticoincidence Lateral Side (ACL)
//
solidACL1 = new G4Box("ACL1",
ACL1SizeX/2,ACL1SizeY/2,ACL1SizeZ/2);
logicACL1 = new G4LogicalVolume(solidACL1,ACDMaterial,"ACL");
physiACL1 = new G4PVPlacement(0,
G4ThreeVector(-PayloadSizeXY/2+ACL1SizeX/2,
-PayloadSizeXY/2+ACL1SizeY/2,
-PayloadSizeZ/2+ACL1SizeZ/2),
"ACL1",
logicACL1,
physiPayload,
false,
0);
physiACL1 = new G4PVPlacement(0,
G4ThreeVector(PayloadSizeXY/2-ACL1SizeX/2,
PayloadSizeXY/2-ACL1SizeY/2,
-PayloadSizeZ/2+ACL1SizeZ/2),
"ACL1",
logicACL1,
physiPayload,
false,
1);
solidACL2 = new G4Box("ACL2",
ACL2SizeX/2,ACL2SizeY/2,ACL2SizeZ/2);
logicACL2 = new G4LogicalVolume(solidACL2,
ACDMaterial,
"ACL2");
physiACL2 = new G4PVPlacement(0,
G4ThreeVector(-PayloadSizeXY/2+ACL2SizeX/2,
PayloadSizeXY/2-ACL2SizeY/2,
-PayloadSizeZ/2+ACL2SizeZ/2),
"ACL2",
logicACL2,
physiPayload,
false,
0);
physiACL2 = new G4PVPlacement(0,
G4ThreeVector(PayloadSizeXY/2-ACL2SizeX/2,
-PayloadSizeXY/2+ACL2SizeY/2,
-PayloadSizeZ/2+ACL2SizeZ/2),
"ACL2",
logicACL2,
physiPayload,
false,
1);
// Tracker Structure (Plane + Converter + TKRDetectorX + TKRDetectorY)
solidPlane = new G4Box("Plane",
TKRSizeXY/2,TKRSizeXY/2,TKRSupportThickness/2);
logicPlane = new G4LogicalVolume(solidPlane,
defaultMaterial,
"Plane");
solidTKRDetectorY = new G4Box
("TKRDetectorY",TKRSizeXY/2,TKRSizeXY/2,TKRSiliconThickness/2);
logicTKRDetectorY = new G4LogicalVolume(solidTKRDetectorY,
TKRMaterial,
"TKRDetector Y");
solidTKRDetectorX = new G4Box
("TKRDetectorX",TKRSizeXY/2,TKRSizeXY/2,TKRSiliconThickness/2);
logicTKRDetectorX = new G4LogicalVolume(solidTKRDetectorX,
TKRMaterial,
"TKRDetector X");
solidConverter = new G4Box
("Converter",TKRSizeXY/2,TKRSizeXY/2,ConverterThickness/2);
logicConverter = new G4LogicalVolume(solidConverter,
ConverterMaterial,
"Converter");
G4int i=0;
for (i = 0; i < NbOfTKRLayers; i++)
{
physiTKRDetectorY =
new G4PVPlacement(0,G4ThreeVector(0.,0.,-TKRSizeZ/2
+TKRSiliconThickness/2
+(i)*TKRLayerDistance),
"TKRDetectorY",
logicTKRDetectorY,
physiTKR,
false,
i);
physiTKRDetectorX =
new G4PVPlacement(0,G4ThreeVector(0.,0.,
-TKRSizeZ/2+
TKRSiliconThickness/2 +
TKRViewsDistance+
TKRSiliconThickness+
(i)*TKRLayerDistance),
"TKRDetectorX",
logicTKRDetectorX,
physiTKR,
false,
i);
physiConverter =
new G4PVPlacement(0,G4ThreeVector(0.,0.,
-TKRSizeZ/2+
2*TKRSiliconThickness +
TKRViewsDistance+
ConverterThickness/2+
(i)*TKRLayerDistance),
"Converter",
logicConverter,
physiTKR,
false,
i);
logicTKR = new G4LogicalVolume(solidTKR,
defaultMaterial,
"TKR");
physiTKR = new G4PVPlacement(0,
G4ThreeVector(0,0,
-PayloadSizeZ/2+CALSizeZ+
CALTKRDistance+TKRSizeZ/2),
"TKR",
logicTKR,
physiPayload,
false,
0);
//
// Anticoincidence Top (ACT)
//
solidACT = new G4Box("ACT",
ACTSizeXY/2,ACTSizeXY/2,ACTSizeZ/2);
logicACT = new G4LogicalVolume(solidACT,ACDMaterial,"ACT");
physiACT = new G4PVPlacement(0,
G4ThreeVector(0,0,
-PayloadSizeZ/2+CALSizeZ+
CALTKRDistance+TKRSizeZ+
ACDTKRDistance+ACTSizeZ/2),
"ACT",
logicACT,
physiPayload,
false,
0);
//
// Anticoincidence Lateral Side (ACL)
//
solidACL1 = new G4Box("ACL1",
ACL1SizeX/2,ACL1SizeY/2,ACL1SizeZ/2);
logicACL1 = new G4LogicalVolume(solidACL1,ACDMaterial,"ACL");
physiACL1 = new G4PVPlacement(0,
G4ThreeVector(-PayloadSizeXY/2+ACL1SizeX/2,
-PayloadSizeXY/2+ACL1SizeY/2,
-PayloadSizeZ/2+ACL1SizeZ/2),
"ACL1",
logicACL1,
physiPayload,
false,
0);
physiACL1 = new G4PVPlacement(0,
G4ThreeVector(PayloadSizeXY/2-ACL1SizeX/2,
PayloadSizeXY/2-ACL1SizeY/2,
-PayloadSizeZ/2+ACL1SizeZ/2),
"ACL1",
logicACL1,
physiPayload,
false,
1);
solidACL2 = new G4Box("ACL2",
ACL2SizeX/2,ACL2SizeY/2,ACL2SizeZ/2);
logicACL2 = new G4LogicalVolume(solidACL2,
ACDMaterial,
"ACL2");
physiACL2 = new G4PVPlacement(0,
G4ThreeVector(-PayloadSizeXY/2+ACL2SizeX/2,
PayloadSizeXY/2-ACL2SizeY/2,
-PayloadSizeZ/2+ACL2SizeZ/2),
"ACL2",
logicACL2,
physiPayload,
false,
0);
physiACL2 = new G4PVPlacement(0,
G4ThreeVector(PayloadSizeXY/2-ACL2SizeX/2,
-PayloadSizeXY/2+ACL2SizeY/2,
-PayloadSizeZ/2+ACL2SizeZ/2),
"ACL2",
logicACL2,
physiPayload,
false,
1);
physiPlane =
new G4PVPlacement(0,G4ThreeVector(0.,0.,
-TKRSizeZ/2+
2*TKRSiliconThickness +
TKRViewsDistance+
ConverterThickness+
TKRSupportThickness/2),
"Plane",
logicPlane,
physiTKR,
false,
i);
// Tracker Structure (Plane + Converter + TKRDetectorX + TKRDetectorY)
solidPlane = new G4Box("Plane",
TKRSizeXY/2,TKRSizeXY/2,TKRSupportThickness/2);
logicPlane = new G4LogicalVolume(solidPlane,
defaultMaterial,
"Plane");
solidTKRDetectorY = new G4Box
("TKRDetectorY",TKRSizeXY/2,TKRSizeXY/2,TKRSiliconThickness/2);
logicTKRDetectorY = new G4LogicalVolume(solidTKRDetectorY,
TKRMaterial,
"TKRDetector Y");
solidTKRDetectorX = new G4Box
("TKRDetectorX",TKRSizeXY/2,TKRSizeXY/2,TKRSiliconThickness/2);
logicTKRDetectorX = new G4LogicalVolume(solidTKRDetectorX,
TKRMaterial,
"TKRDetector X");
solidConverter = new G4Box
("Converter",TKRSizeXY/2,TKRSizeXY/2,ConverterThickness/2);
logicConverter = new G4LogicalVolume(solidConverter,
ConverterMaterial,
"Converter");
G4int i=0;
for (i = 0; i < NbOfTKRLayers; i++)
}
G4VSolid * solidTKRActiveTileX = new
G4Box("Active Tile X", TKRActiveTileXY/2,
TKRActiveTileXY/2,TKRActiveTileZ/2);
G4VSolid * solidTKRActiveTileY = new
G4Box("Active Tile Y", TKRActiveTileXY/2,
TKRActiveTileXY/2,TKRActiveTileZ/2);
G4LogicalVolume* logicTKRActiveTileX =
new G4LogicalVolume(solidTKRActiveTileX, TKRMaterial,
"Active Tile X",0,0,0);
G4LogicalVolume* logicTKRActiveTileY =
new G4LogicalVolume(solidTKRActiveTileY, TKRMaterial,
"Active Tile Y",0,0,0);
G4int j=0;
G4int k=0;
G4VPhysicalVolume* physiTKRActiveTileX = 0;
G4VPhysicalVolume* physiTKRActiveTileY = 0;
G4double x=0.;
G4double y=0.;
G4double z=0.;
for (i=0;i< NbOfTKRTiles; i++)
{
for (j=0;j< NbOfTKRTiles; j++)
{
k = i*NbOfTKRTiles + j;
physiTKRDetectorY =
new G4PVPlacement(0,G4ThreeVector(0.,0.,-TKRSizeZ/2
+TKRSiliconThickness/2
+(i)*TKRLayerDistance),
"TKRDetectorY",
logicTKRDetectorY,
physiTKR,
x = -TKRSizeXY/2+TilesSeparation+SiliconGuardRing+
TKRActiveTileXY/2+(i)*((2*SiliconGuardRing)+
TilesSeparation+TKRActiveTileXY);
y = -TKRSizeXY/2+TilesSeparation+SiliconGuardRing+
TKRActiveTileXY/2+(j)*((2*SiliconGuardRing)+TilesSeparation+
TKRActiveTileXY);
z = 0.;
physiTKRActiveTileY =
new G4PVPlacement(0,
G4ThreeVector(x,y,z),
"Active Tile Y",
logicTKRActiveTileY,
physiTKRDetectorY,
false,
i);
physiTKRDetectorX =
new G4PVPlacement(0,G4ThreeVector(0.,0.,
-TKRSizeZ/2+
TKRSiliconThickness/2 +
TKRViewsDistance+
TKRSiliconThickness+
(i)*TKRLayerDistance),
"TKRDetectorX",
logicTKRDetectorX,
physiTKR,
false,
i);
physiConverter =
new G4PVPlacement(0,G4ThreeVector(0.,0.,
-TKRSizeZ/2+
2*TKRSiliconThickness +
TKRViewsDistance+
ConverterThickness/2+
(i)*TKRLayerDistance),
"Converter",
logicConverter,
physiTKR,
false,
i);
k);
physiPlane =
new G4PVPlacement(0,G4ThreeVector(0.,0.,
-TKRSizeZ/2+
2*TKRSiliconThickness +
TKRViewsDistance+
ConverterThickness+
TKRSupportThickness/2),
"Plane",
logicPlane,
physiTKR,
x = -TKRSizeXY/2+TilesSeparation+SiliconGuardRing+
TKRActiveTileXY/2+(j)*((2*SiliconGuardRing)+
TilesSeparation+TKRActiveTileXY);
y = -TKRSizeXY/2+TilesSeparation+SiliconGuardRing+
TKRActiveTileXY/2+(i)*((2*SiliconGuardRing)+
TilesSeparation+TKRActiveTileXY);
z = 0.;
physiTKRActiveTileX =
new G4PVPlacement(0,
G4ThreeVector(x,y,z),
"Active Tile X",
logicTKRActiveTileX,
physiTKRDetectorX,
false,
i);
k);
}
}
G4VSolid * solidTKRActiveTileX = new
G4Box("Active Tile X", TKRActiveTileXY/2,TKRActiveTileXY/2,TKRActiveTileZ/2);
G4VSolid * solidTKRActiveTileY = new
G4Box("Active Tile Y", TKRActiveTileXY/2,TKRActiveTileXY/2,TKRActiveTileZ/2);
// Calorimeter Structure (CALLayerX + CALLayerY)
G4LogicalVolume* logicTKRActiveTileX =
new G4LogicalVolume(solidTKRActiveTileX, TKRMaterial,
"Active Tile X",0,0,0);
G4LogicalVolume* logicTKRActiveTileY =
new G4LogicalVolume(solidTKRActiveTileY, TKRMaterial,
"Active Tile Y",0,0,0);
G4int j=0;
G4int k=0;
G4VPhysicalVolume* physiTKRActiveTileX = 0;
G4VPhysicalVolume* physiTKRActiveTileY = 0;
G4double x=0.;
G4double y=0.;
G4double z=0.;
for (i=0;i< NbOfTKRTiles; i++)
{
for (j=0;j< NbOfTKRTiles; j++)
{
k = i*NbOfTKRTiles + j;
x = -TKRSizeXY/2+TilesSeparation+SiliconGuardRing+
TKRActiveTileXY/2+(i)*((2*SiliconGuardRing)+
TilesSeparation+TKRActiveTileXY);
y = -TKRSizeXY/2+TilesSeparation+SiliconGuardRing+
TKRActiveTileXY/2+(j)*((2*SiliconGuardRing)+TilesSeparation+
TKRActiveTileXY);
z = 0.;
physiTKRActiveTileY =
new G4PVPlacement(0,
G4ThreeVector(x,y,z),
"Active Tile Y",
logicTKRActiveTileY,
physiTKRDetectorY,
false,
k);
x = -TKRSizeXY/2+TilesSeparation+SiliconGuardRing+
TKRActiveTileXY/2+(j)*((2*SiliconGuardRing)+
TilesSeparation+TKRActiveTileXY);
y = -TKRSizeXY/2+TilesSeparation+SiliconGuardRing+
TKRActiveTileXY/2+(i)*((2*SiliconGuardRing)+
TilesSeparation+TKRActiveTileXY);
z = 0.;
physiTKRActiveTileX =
new G4PVPlacement(0,
G4ThreeVector(x,y,z),
"Active Tile X",
logicTKRActiveTileX,
physiTKRDetectorX,
false,
k);
}
}
// Calorimeter Structure (CALDetectorX + CALDetectorY)
solidCALDetector = new G4Box("CALDetector",
solidCALLayerX = new G4Box("CALLayerX",
CALSizeXY/2,CALSizeXY/2,CALBarThickness/2);
logicCALDetector = new G4LogicalVolume(solidCALDetector,
CALMaterial,
"CALDetector");
for (i = 0; i < NbOfCALLayers; i++)
{
physiCALDetectorY =
new G4PVPlacement(0,G4ThreeVector(0,0,
-CALSizeZ/2+
CALBarThickness/2 +
(i)*2*CALBarThickness),
"CALDetectorY",
logicCALDetector,
physiCAL,
false,
i);
physiCALDetectorX =
new G4PVPlacement(0,G4ThreeVector(0,0,
-CALSizeZ/2+
CALBarThickness/2 +
CALBarThickness +
(i)*2*CALBarThickness),
"CALDetectorX",
logicCALDetector,
physiCAL,
false,
i);
}
//}
//
// Sensitive Detectors: TKRDetector
//
G4SDManager* SDman = G4SDManager::GetSDMpointer();
if(!payloadSD)
{
payloadSD = new GammaRayTelPayloadSD("PayloadSD",this);
SDman->AddNewDetector( payloadSD );
}
G4String ROgeometryName = "PayloadROGeom";
G4VReadOutGeometry* payloadRO =
payloadRO = new GammaRayTelPayloadROGeometry(ROgeometryName, this);
payloadRO->BuildROGeometry();
payloadSD->SetROgeometry(payloadRO);
// if (logicTKRDetector)
// logicTKRDetector->SetSensitiveDetector(payloadSD); // sensitive planes
if (logicTKRActiveTileX)
logicTKRActiveTileX->SetSensitiveDetector(payloadSD); // sensitive tile
if (logicTKRActiveTileY)
logicTKRActiveTileY->SetSensitiveDetector(payloadSD); // sensitive tile
//
// Visualization attributes
//
// Invisible Volume
logicWorld->SetVisAttributes (G4VisAttributes::Invisible);
logicPayload->SetVisAttributes (G4VisAttributes::Invisible);
logicTKR->SetVisAttributes(G4VisAttributes::Invisible);
logicTKRActiveTileX->SetVisAttributes(G4VisAttributes::Invisible);
logicTKRActiveTileY->SetVisAttributes(G4VisAttributes::Invisible);
logicPlane->SetVisAttributes(G4VisAttributes::Invisible);
logicConverter->SetVisAttributes(G4VisAttributes::Invisible);
logicCALLayerX = new G4LogicalVolume(solidCALLayerX,
CALMaterial,
"CALLayerX");
// Some visualization styles
G4VisAttributes* VisAtt1= new G4VisAttributes(G4Colour(0.3,0.8,0.1));
VisAtt1->SetVisibility(true);
VisAtt1->SetForceSolid(TRUE);
G4VisAttributes* VisAtt2= new G4VisAttributes(G4Colour(0.2,0.3,0.8));
VisAtt2->SetVisibility(true);
VisAtt2->SetForceSolid(FALSE);
G4VisAttributes* VisAtt3= new G4VisAttributes(G4Colour(0.8,0.2,0.3));
VisAtt3->SetVisibility(true);
VisAtt3->SetForceWireframe(TRUE);
// Visible Volumes
logicCAL->SetVisAttributes(VisAtt1);
logicTKRDetectorX->SetVisAttributes(VisAtt2);
logicTKRDetectorY->SetVisAttributes(VisAtt2);
logicACT->SetVisAttributes(VisAtt3);
logicACL1->SetVisAttributes(VisAtt3);
logicACL2->SetVisAttributes(VisAtt3);
solidCALLayerY = new G4Box("CALLayerY",
CALSizeXY/2,CALSizeXY/2,CALBarThickness/2);
logicCALLayerY = new G4LogicalVolume(solidCALLayerY,
CALMaterial,
"CALLayerY");
for (i = 0; i < NbOfCALLayers; i++)
{
physiCALLayerY =
new G4PVPlacement(0,G4ThreeVector(0,0,
-CALSizeZ/2+
CALBarThickness/2 +
(i)*2*CALBarThickness),
"CALLayerY",
logicCALLayerY,
physiCAL,
false,
i);
physiCALLayerX =
new G4PVPlacement(0,G4ThreeVector(0,0,
-CALSizeZ/2+
CALBarThickness/2 +
CALBarThickness +
(i)*2*CALBarThickness),
"CALLayerX",
logicCALLayerX,
physiCAL,
false,
i);
}
// Calorimeter Structure (CALDetectorX + CALDetectorY)
solidCALDetectorX = new G4Box("CALDetectorX",
CALBarX/2,CALBarY/2,CALBarThickness/2);
logicCALDetectorX = new G4LogicalVolume(solidCALDetectorX,
CALMaterial,
"CALDetectorX");
solidCALDetectorY = new G4Box("CALDetectorY",
CALBarY/2,CALBarX/2,CALBarThickness/2);
logicCALDetectorY = new G4LogicalVolume(solidCALDetectorY,
CALMaterial,
"CALDetectorY");
for (i = 0; i < NbOfCALBars; i++)
{
physiCALDetectorY =
new G4PVPlacement(0,
G4ThreeVector(-CALSizeXY/2+ CALBarY/2 +
(i)*CALBarY, 0, 0),
"CALDetectorY",
logicCALDetectorY,
physiCALLayerY,
false,
i);
physiCALDetectorX =
new G4PVPlacement(0,
G4ThreeVector(0,-CALSizeXY/2+ CALBarY/2 +
(i)*CALBarY, 0),
"CALDetectorX",
logicCALDetectorX,
physiCALLayerX,
false,
i);
}
// Sensitive Detector Manager
G4SDManager* SDman = G4SDManager::GetSDMpointer();
//
// Sensitive Detectors - Tracker
//
if(!trackerSD)
{
trackerSD = new GammaRayTelTrackerSD("TrackerSD",this);
SDman->AddNewDetector( trackerSD );
}
G4String ROgeometryName = "TrackerROGeom";
G4VReadOutGeometry* trackerRO =
new GammaRayTelTrackerROGeometry(ROgeometryName, this);
trackerRO->BuildROGeometry();
trackerSD->SetROgeometry(trackerRO);
if (logicTKRActiveTileX)
logicTKRActiveTileX->SetSensitiveDetector(trackerSD); // ActiveTileX
if (logicTKRActiveTileY)
logicTKRActiveTileY->SetSensitiveDetector(trackerSD); // ActiveTileY
//
// Sensitive Detectors: Calorimeter
//
if(!calorimeterSD)
{
calorimeterSD = new GammaRayTelCalorimeterSD("CalorimeterSD",this);
SDman->AddNewDetector( calorimeterSD );
}
if (logicCALDetectorX)
logicCALDetectorX->SetSensitiveDetector(calorimeterSD); // BarX
if (logicCALDetectorY)
logicCALDetectorY->SetSensitiveDetector(calorimeterSD); // BarY
//
// Sensitive Detectors: Anticoincidence
//
if(!anticoincidenceSD)
{
anticoincidenceSD = new GammaRayTelAnticoincidenceSD
("AnticoincidenceSD",this);
SDman->AddNewDetector( anticoincidenceSD );
}
if (logicACT)
logicACT->SetSensitiveDetector(anticoincidenceSD); // ACD top
if (logicACL1)
logicACL1->SetSensitiveDetector(anticoincidenceSD); // ACD lateral side
if (logicACL2)
logicACL2->SetSensitiveDetector(anticoincidenceSD); // ACD lateral side
//
// Visualization attributes
//
// Invisible Volume
logicWorld->SetVisAttributes (G4VisAttributes::Invisible);
logicPayload->SetVisAttributes (G4VisAttributes::Invisible);
logicTKR->SetVisAttributes(G4VisAttributes::Invisible);
logicTKRActiveTileX->SetVisAttributes(G4VisAttributes::Invisible);
logicTKRActiveTileY->SetVisAttributes(G4VisAttributes::Invisible);
logicPlane->SetVisAttributes(G4VisAttributes::Invisible);
logicConverter->SetVisAttributes(G4VisAttributes::Invisible);
logicCAL->SetVisAttributes(G4VisAttributes::Invisible);
logicCALLayerX->SetVisAttributes(G4VisAttributes::Invisible);
logicCALLayerY->SetVisAttributes(G4VisAttributes::Invisible);
// Some visualization styles
G4VisAttributes* VisAtt1= new G4VisAttributes(G4Colour(0.3,0.8,0.1));
VisAtt1->SetVisibility(true);
VisAtt1->SetForceSolid(TRUE);
G4VisAttributes* VisAtt2= new G4VisAttributes(G4Colour(0.2,0.3,0.8));
VisAtt2->SetVisibility(true);
VisAtt2->SetForceSolid(FALSE);
G4VisAttributes* VisAtt3= new G4VisAttributes(G4Colour(0.8,0.2,0.3));
VisAtt3->SetVisibility(true);
VisAtt3->SetForceWireframe(TRUE);
// Visible Volumes
logicCALDetectorX->SetVisAttributes(VisAtt1);
logicCALDetectorY->SetVisAttributes(VisAtt1);
logicTKRDetectorX->SetVisAttributes(VisAtt2);
logicTKRDetectorY->SetVisAttributes(VisAtt2);
logicACT->SetVisAttributes(VisAtt3);
logicACL1->SetVisAttributes(VisAtt3);
logicACL2->SetVisAttributes(VisAtt3);
//
//always return the physical World
//
PrintPayloadParameters();
return physiWorld;
}
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo....
void GammaRayTelDetectorConstruction::PrintPayloadParameters()
@@ -6,7 +6,7 @@
// and all its terms.
//
// $Id: GammaRayTelDetectorMessenger.cc,v 1.3 2000/12/06 16:53:14 flongo Exp $
// GEANT4 tag $Name: geant4-03-00 $
// GEANT4 tag $Name: geant4-03-01 $
//
// ------------------------------------------------------------
// GEANT 4 class implementation file
@@ -5,8 +5,8 @@
// based on the Program) you indicate your acceptance of this statement,
// and all its terms.
//
// $Id: GammaRayTelEventAction.cc,v 1.4 2000/12/06 16:53:14 flongo Exp $
// GEANT4 tag $Name: geant4-03-00 $
// $Id: GammaRayTelEventAction.cc,v 1.5 2001/03/05 13:58:23 flongo Exp $
// GEANT4 tag $Name: geant4-03-01 $
// ------------------------------------------------------------
// GEANT 4 class implementation file
// CERN Geneva Switzerland
@@ -20,7 +20,10 @@
// ************************************************************
#include "GammaRayTelEventAction.hh"
#include "GammaRayTelPayloadHit.hh"
#include "GammaRayTelTrackerHit.hh"
#include "GammaRayTelAnticoincidenceHit.hh"
#include "GammaRayTelCalorimeterHit.hh"
#include "g4rw/tvordvec.h"
#ifdef G4ANALYSIS_USE
@@ -48,12 +51,14 @@ extern G4std::ofstream outFile;
#ifdef G4ANALYSIS_USE
GammaRayTelEventAction::GammaRayTelEventAction(GammaRayTelAnalysisManager* aMgr)
:drawFlag("all"),trackerCollID(-1),analysisManager(aMgr)
:drawFlag("all"),trackerCollID(-1), calorimeterCollID(-1),
anticoincidenceCollID(-1), analysisManager(aMgr)
{
}
#else
GammaRayTelEventAction::GammaRayTelEventAction()
:drawFlag("all"), trackerCollID(-1)
:drawFlag("all"), trackerCollID(-1),calorimeterCollID(-1),
anticoincidenceCollID(-1)
{
}
#endif
@@ -71,13 +76,22 @@ void GammaRayTelEventAction::BeginOfEventAction(const G4Event* evt)
G4int evtNb = evt->GetEventID();
G4cout << "Event: " << evtNb << G4endl;
G4SDManager * SDman = G4SDManager::GetSDMpointer();
if (trackerCollID==-1)
{
G4SDManager * SDman = G4SDManager::GetSDMpointer();
trackerCollID = SDman->GetCollectionID("PayloadCollection");
trackerCollID = SDman->GetCollectionID("TrackerCollection");
}
if(anticoincidenceCollID==-1)
{
anticoincidenceCollID =
SDman->GetCollectionID("AnticoincidenceCollection");
}
if(calorimeterCollID==-1)
{
calorimeterCollID =
SDman->GetCollectionID("CalorimeterCollection");
}
}
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo....
@@ -86,39 +100,50 @@ void GammaRayTelEventAction::EndOfEventAction(const G4Event* evt)
{
G4int event_id = evt->GetEventID();
G4TrajectoryContainer * trajectoryContainer = evt->GetTrajectoryContainer();
G4int n_trajectories = 0;
if (trajectoryContainer) n_trajectories = trajectoryContainer->entries();
G4HCofThisEvent* HCE = evt->GetHCofThisEvent();
GammaRayTelPayloadHitsCollection* CHC = NULL;
GammaRayTelTrackerHitsCollection* THC = 0;
GammaRayTelCalorimeterHitsCollection* CHC = 0;
GammaRayTelAnticoincidenceHitsCollection* AHC = 0;
if (HCE)
CHC = (GammaRayTelPayloadHitsCollection*)(HCE->GetHC(trackerCollID));
if (CHC)
{
int n_hit = CHC->entries();
G4cout << "Number of hits in this event = " << n_hit << G4endl;
THC = (GammaRayTelTrackerHitsCollection*)(HCE->GetHC(trackerCollID));
CHC = (GammaRayTelCalorimeterHitsCollection*)
(HCE->GetHC(calorimeterCollID));
AHC = (GammaRayTelAnticoincidenceHitsCollection*)
(HCE->GetHC(anticoincidenceCollID));
}
if (THC)
{
int n_hit = THC->entries();
G4cout << "Number of tracker hits in this event = " << n_hit << G4endl;
G4double ESil=0;
G4int NStrip, NPlane, IsX;
// This is a cycle on all the hits of this event
// This is a cycle on all the tracker hits of this event
for (int i=0;i<n_hit;i++)
{
// Here we put the hit data in a an ASCII file for
// later analysis
ESil = (*CHC)[i]->GetEdepSil();
NStrip = (*CHC)[i]->GetNStrip();
NPlane = (*CHC)[i]->GetNSilPlane();
IsX = (*CHC)[i]->GetPlaneType();
ESil = (*THC)[i]->GetEdepSil();
NStrip = (*THC)[i]->GetNStrip();
NPlane = (*THC)[i]->GetNSilPlane();
IsX = (*THC)[i]->GetPlaneType();
outFile << G4std::setw(7) << event_id << " " <<
ESil/keV << " " << NStrip <<
" " << NPlane << " " << IsX << " " <<
(*CHC)[i]->GetPos().x()/mm <<" "<<
(*CHC)[i]->GetPos().y()/mm <<" "<<
(*CHC)[i]->GetPos().z()/mm <<" "<<
(*THC)[i]->GetPos().x()/mm <<" "<<
(*THC)[i]->GetPos().y()/mm <<" "<<
(*THC)[i]->GetPos().z()/mm <<" "<<
G4endl;
#ifdef G4ANALYSIS_USE
@@ -6,7 +6,7 @@
// and all its terms.
//
// $Id: GammaRayTelPhysicsList.cc,v 1.2 2000/11/15 20:27:41 flongo Exp $
// GEANT4 tag $Name: geant4-03-00 $
// GEANT4 tag $Name: geant4-03-01 $
// ------------------------------------------------------------
// GEANT 4 class implementation file
// CERN Geneva Switzerland
@@ -6,7 +6,7 @@
// and all its terms.
//
// $Id: GammaRayTelPrimaryGeneratorAction.cc,v 1.3 2000/11/24 16:57:00 flongo Exp $
// GEANT4 tag $Name: geant4-03-00 $
// GEANT4 tag $Name: geant4-03-01 $
// ------------------------------------------------------------
// GEANT 4 class implementation file
// CERN Geneva Switzerland
@@ -6,7 +6,7 @@
// and all its terms.
//
// $Id: GammaRayTelPrimaryGeneratorMessenger.cc,v 1.2 2000/11/15 20:27:41 flongo Exp $
// GEANT4 tag $Name: geant4-03-00 $
// GEANT4 tag $Name: geant4-03-01 $
// ------------------------------------------------------------
// GEANT 4 class implementation file
// CERN Geneva Switzerland
@@ -6,7 +6,7 @@
// and all its terms.
//
// $Id: GammaRayTelRunAction.cc,v 1.3 2000/12/06 16:53:14 flongo Exp $
// GEANT4 tag $Name: geant4-03-00 $
// GEANT4 tag $Name: geant4-03-01 $
// ------------------------------------------------------------
// GEANT 4 class implementation file
// CERN Geneva Switzerland
@@ -5,8 +5,8 @@
// based on the Program) you indicate your acceptance of this statement,
// and all its terms.
//
// $Id: GammaRayTelPayloadHit.cc,v 1.2 2000/11/15 20:27:41 flongo Exp $
// GEANT4 tag $Name: geant4-03-00 $
// $Id: GammaRayTelTrackerHit.cc,v 1.1 2001/03/05 13:58:23 flongo Exp $
// GEANT4 tag $Name: geant4-03-01 $
// ------------------------------------------------------------
// GEANT 4 class implementation file
// CERN Geneva Switzerland
@@ -14,20 +14,20 @@
// For information related to this code contact:
// CERN, IT Division, ASD group
//
// ------------ GammaRayTelPayloadHit ------
// ------------ GammaRayTelTrackerHit ------
// by R.Giannitrapani, F.Longo & G.Santin (13 nov 2000)
//
// ************************************************************
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo....
#include "GammaRayTelPayloadHit.hh"
#include "GammaRayTelTrackerHit.hh"
G4Allocator<GammaRayTelPayloadHit> GammaRayTelPayloadHitAllocator;
G4Allocator<GammaRayTelTrackerHit> GammaRayTelTrackerHitAllocator;
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo....
GammaRayTelPayloadHit::GammaRayTelPayloadHit()
GammaRayTelTrackerHit::GammaRayTelTrackerHit()
{
EdepSil = 0.;
NStrip = 0; NSilPlane = 0; IsXPlane = 0;
@@ -36,12 +36,12 @@ GammaRayTelPayloadHit::GammaRayTelPayloadHit()
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo....
GammaRayTelPayloadHit::~GammaRayTelPayloadHit()
GammaRayTelTrackerHit::~GammaRayTelTrackerHit()
{;}
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo....
GammaRayTelPayloadHit::GammaRayTelPayloadHit(const GammaRayTelPayloadHit& right)
GammaRayTelTrackerHit::GammaRayTelTrackerHit(const GammaRayTelTrackerHit& right)
{
EdepSil = right.EdepSil;
NStrip = right.NStrip; NSilPlane = right.NSilPlane;
@@ -51,7 +51,7 @@ GammaRayTelPayloadHit::GammaRayTelPayloadHit(const GammaRayTelPayloadHit& right)
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo....
const GammaRayTelPayloadHit& GammaRayTelPayloadHit::operator=(const GammaRayTelPayloadHit& right)
const GammaRayTelTrackerHit& GammaRayTelTrackerHit::operator=(const GammaRayTelTrackerHit& right)
{
EdepSil = right.EdepSil;
NStrip = right.NStrip; NSilPlane = right.NSilPlane;
@@ -62,19 +62,19 @@ const GammaRayTelPayloadHit& GammaRayTelPayloadHit::operator=(const GammaRayTelP
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo....
int GammaRayTelPayloadHit::operator==(const GammaRayTelPayloadHit& right) const
int GammaRayTelTrackerHit::operator==(const GammaRayTelTrackerHit& right) const
{
return 0;
}
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo....
void GammaRayTelPayloadHit::Draw()
void GammaRayTelTrackerHit::Draw()
{;}
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo....
void GammaRayTelPayloadHit::Print()
void GammaRayTelTrackerHit::Print()
{;}
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo....
@@ -5,8 +5,8 @@
// based on the Program) you indicate your acceptance of this statement,
// and all its terms.
//
// $Id: GammaRayTelPayloadROGeometry.cc,v 1.2 2000/11/20 16:49:02 flongo Exp $
// GEANT4 tag $Name: geant4-03-00 $
// $Id: GammaRayTelTrackerROGeometry.cc,v 1.1 2001/03/05 13:58:23 flongo Exp $
// GEANT4 tag $Name: geant4-03-01 $
//
//
// ------------------------------------------------------------
@@ -16,12 +16,12 @@
// For information related to this code contact:
// CERN, IT Division, ASD group
//
// ------------ GammaRayTelPayloadROGeometry class ------
// ------------ GammaRayTelTrackerROGeometry class ------
// by F.Longo, R.Giannitrapani & G.Santin (13 nov 2000)
//
// ************************************************************
#include "GammaRayTelPayloadROGeometry.hh"
#include "GammaRayTelTrackerROGeometry.hh"
#include "GammaRayTelDummySD.hh"
#include "GammaRayTelDetectorConstruction.hh"
@@ -35,25 +35,25 @@
#include "G4Material.hh"
GammaRayTelPayloadROGeometry::GammaRayTelPayloadROGeometry()
GammaRayTelTrackerROGeometry::GammaRayTelTrackerROGeometry()
: G4VReadOutGeometry()
{
}
GammaRayTelPayloadROGeometry::GammaRayTelPayloadROGeometry(G4String aString,GammaRayTelDetectorConstruction* GammaRayTelDC)
GammaRayTelTrackerROGeometry::GammaRayTelTrackerROGeometry(G4String aString,GammaRayTelDetectorConstruction* GammaRayTelDC)
:GammaRayTelDetector(GammaRayTelDC), G4VReadOutGeometry(aString)
{
}
GammaRayTelPayloadROGeometry::GammaRayTelPayloadROGeometry(G4String aString)
GammaRayTelTrackerROGeometry::GammaRayTelTrackerROGeometry(G4String aString)
: G4VReadOutGeometry(aString)
{
}
GammaRayTelPayloadROGeometry::~GammaRayTelPayloadROGeometry()
GammaRayTelTrackerROGeometry::~GammaRayTelTrackerROGeometry()
{
}
G4VPhysicalVolume* GammaRayTelPayloadROGeometry::Build()
G4VPhysicalVolume* GammaRayTelTrackerROGeometry::Build()
{
// A dummy material is used to fill the volumes of the readout geometry.
// ( It will be allowed to set a NULL pointer in volumes of such virtual
@@ -5,8 +5,8 @@
// based on the Program) you indicate your acceptance of this statement,
// and all its terms.
//
// $Id: GammaRayTelPayloadSD.cc,v 1.6 2000/12/06 17:48:10 flongo Exp $
// GEANT4 tag $Name: geant4-03-00 $
// $Id: GammaRayTelTrackerSD.cc,v 1.1 2001/03/05 13:58:23 flongo Exp $
// GEANT4 tag $Name: geant4-03-01 $
// ------------------------------------------------------------
// GEANT 4 class implementation file
// CERN Geneva Switzerland
@@ -14,14 +14,14 @@
// For information related to this code contact:
// CERN, IT Division, ASD group
//
// ------------ GammaRayTelPayloadSD ------
// ------------ GammaRayTelTrackerSD ------
// by R.Giannitrapani, F.Longo & G.Santin (13 nov 2000)
//
// ************************************************************
#include "GammaRayTelPayloadSD.hh"
#include "GammaRayTelTrackerSD.hh"
#include "GammaRayTelPayloadHit.hh"
#include "GammaRayTelTrackerHit.hh"
#include "GammaRayTelDetectorConstruction.hh"
#include "G4VPhysicalVolume.hh"
@@ -35,7 +35,7 @@
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo....
GammaRayTelPayloadSD::GammaRayTelPayloadSD(G4String name,
GammaRayTelTrackerSD::GammaRayTelTrackerSD(G4String name,
GammaRayTelDetectorConstruction* det)
:G4VSensitiveDetector(name),Detector(det)
{
@@ -44,36 +44,37 @@ GammaRayTelPayloadSD::GammaRayTelPayloadSD(G4String name,
NbOfTKRLayers = Detector->GetNbOfTKRLayers();
NbOfTKRStrips = NbOfTKRStrips*NbOfTKRTiles;
HitXID = new G4int[NbOfTKRStrips][30];
HitYID = new G4int[NbOfTKRStrips][30];
collectionName.insert("PayloadCollection");
ThitXID = new G4int[NbOfTKRStrips][30];
ThitYID = new G4int[NbOfTKRStrips][30];
collectionName.insert("TrackerCollection");
}
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo....
GammaRayTelPayloadSD::~GammaRayTelPayloadSD()
GammaRayTelTrackerSD::~GammaRayTelTrackerSD()
{
delete [] HitXID;
delete [] HitYID;
delete [] ThitXID;
delete [] ThitYID;
}
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo....
void GammaRayTelPayloadSD::Initialize(G4HCofThisEvent*HCE)
void GammaRayTelTrackerSD::Initialize(G4HCofThisEvent*HCE)
{
PayloadCollection = new GammaRayTelPayloadHitsCollection
TrackerCollection = new GammaRayTelTrackerHitsCollection
(SensitiveDetectorName,collectionName[0]);
for (G4int i=0;i<NbOfTKRStrips;i++)
for (G4int i=0;i<NbOfTKRStrips;i++)
for (G4int j=0;j<NbOfTKRLayers;j++)
{
HitXID[i][j] = -1;
HitYID[i][j] = -1;
ThitXID[i][j] = -1;
ThitYID[i][j] = -1;
};
}
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo....
G4bool GammaRayTelPayloadSD::ProcessHits(G4Step* aStep,G4TouchableHistory* ROhist)
G4bool GammaRayTelTrackerSD::ProcessHits(G4Step* aStep,G4TouchableHistory* ROhist)
{
G4double edep = aStep->GetTotalEnergyDeposit();
@@ -129,20 +130,20 @@ G4bool GammaRayTelPayloadSD::ProcessHits(G4Step* aStep,G4TouchableHistory* ROhis
// The hit is on an X silicon plane
{
// This is a new hit
if (HitXID[StripNumber][PlaneNumber]==-1)
if (ThitXID[StripNumber][PlaneNumber]==-1)
{
GammaRayTelPayloadHit* PayloadHit = new GammaRayTelPayloadHit;
PayloadHit->SetPlaneType(1);
PayloadHit->AddSil(edep);
PayloadHit->SetPos(aStep->GetPreStepPoint()->GetPosition());
PayloadHit->SetNSilPlane(PlaneNumber);
PayloadHit->SetNStrip(StripNumber);
HitXID[StripNumber][PlaneNumber] =
PayloadCollection->insert(PayloadHit) -1;
GammaRayTelTrackerHit* TrackerHit = new GammaRayTelTrackerHit;
TrackerHit->SetPlaneType(1);
TrackerHit->AddSil(edep);
TrackerHit->SetPos(aStep->GetPreStepPoint()->GetPosition());
TrackerHit->SetNSilPlane(PlaneNumber);
TrackerHit->SetNStrip(StripNumber);
ThitXID[StripNumber][PlaneNumber] =
TrackerCollection->insert(TrackerHit) -1;
}
else // This is not new
{
(*PayloadCollection)[HitXID[StripNumber][PlaneNumber]]->AddSil(edep);
(*TrackerCollection)[ThitXID[StripNumber][PlaneNumber]]->AddSil(edep);
// G4cout << "X" << PlaneNumber << " " << StripNumber << G4endl;
}
}
@@ -151,20 +152,20 @@ G4bool GammaRayTelPayloadSD::ProcessHits(G4Step* aStep,G4TouchableHistory* ROhis
// The hit is on an Y silicon plane
{
// This is a new hit
if (HitYID[StripNumber][PlaneNumber]==-1)
if (ThitYID[StripNumber][PlaneNumber]==-1)
{
GammaRayTelPayloadHit* PayloadHit = new GammaRayTelPayloadHit;
PayloadHit->SetPlaneType(0);
PayloadHit->AddSil(edep);
PayloadHit->SetPos(aStep->GetPreStepPoint()->GetPosition());
PayloadHit->SetNSilPlane(PlaneNumber);
PayloadHit->SetNStrip(StripNumber);
HitYID[StripNumber][PlaneNumber] =
PayloadCollection->insert(PayloadHit)-1;
GammaRayTelTrackerHit* TrackerHit = new GammaRayTelTrackerHit;
TrackerHit->SetPlaneType(0);
TrackerHit->AddSil(edep);
TrackerHit->SetPos(aStep->GetPreStepPoint()->GetPosition());
TrackerHit->SetNSilPlane(PlaneNumber);
TrackerHit->SetNStrip(StripNumber);
ThitYID[StripNumber][PlaneNumber] =
TrackerCollection->insert(TrackerHit)-1;
}
else // This is not new
{
(*PayloadCollection)[HitYID[StripNumber][PlaneNumber]]->AddSil(edep);
(*TrackerCollection)[ThitYID[StripNumber][PlaneNumber]]->AddSil(edep);
// G4cout << "Y" << PlaneNumber << " " << StripNumber << G4endl;
}
}
@@ -174,37 +175,37 @@ G4bool GammaRayTelPayloadSD::ProcessHits(G4Step* aStep,G4TouchableHistory* ROhis
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo....
void GammaRayTelPayloadSD::EndOfEvent(G4HCofThisEvent* HCE)
void GammaRayTelTrackerSD::EndOfEvent(G4HCofThisEvent* HCE)
{
static G4int HCID = -1;
if(HCID<0)
{
HCID = G4SDManager::GetSDMpointer()->GetCollectionID(collectionName[0]);
}
HCE->AddHitsCollection(HCID,PayloadCollection);
HCE->AddHitsCollection(HCID,TrackerCollection);
for (G4int i=0;i<NbOfTKRLayers;i++)
for (G4int j=0;j<NbOfTKRStrips;j++)
for (G4int i=0;i<NbOfTKRStrips;i++)
for (G4int j=0;j<NbOfTKRLayers;j++)
{
HitXID[i][j] = -1;
HitYID[i][j] = -1;
ThitXID[i][j] = -1;
ThitYID[i][j] = -1;
};
}
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo....
void GammaRayTelPayloadSD::clear()
void GammaRayTelTrackerSD::clear()
{}
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo....
void GammaRayTelPayloadSD::DrawAll()
void GammaRayTelTrackerSD::DrawAll()
{}
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo....
void GammaRayTelPayloadSD::PrintAll()
void GammaRayTelTrackerSD::PrintAll()
{}
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo....
@@ -7,7 +7,7 @@
// and all its terms.
//
// $Id: GammaRayTelVisManager.cc,v 1.2 2000/11/15 20:27:42 flongo Exp $
// GEANT4 tag $Name: geant4-03-00 $
// GEANT4 tag $Name: geant4-03-01 $
// ------------------------------------------------------------
// GEANT 4 class implementation file
// CERN Geneva Switzerland
@@ -6,7 +6,7 @@
// and all its terms.
//
// $Id: AnaEx01.cc,v 1.6 2000/11/15 13:46:23 barrand Exp $
// GEANT4 tag $Name: geant4-03-00 $
// GEANT4 tag $Name: geant4-03-01 $
//
//
// --------------------------------------------------------------
@@ -6,7 +6,7 @@
// and all its terms.
//
// $Id: AnaEx01AnalysisManager.hh,v 1.3 2000/10/31 13:10:00 barrand Exp $
// GEANT4 tag $Name: geant4-03-00 $
// GEANT4 tag $Name: geant4-03-01 $
//
//
@@ -6,7 +6,7 @@
// and all its terms.
//
// $Id: AnaEx01CalorHit.hh,v 1.1.1.1 2000/09/14 11:37:21 barrand Exp $
// GEANT4 tag $Name: geant4-03-00 $
// GEANT4 tag $Name: geant4-03-01 $
//
//
@@ -6,7 +6,7 @@
// and all its terms.
//
// $Id: AnaEx01CalorimeterSD.hh,v 1.1.1.1 2000/09/14 11:37:21 barrand Exp $
// GEANT4 tag $Name: geant4-03-00 $
// GEANT4 tag $Name: geant4-03-01 $
//
//
@@ -6,7 +6,7 @@
// and all its terms.
//
// $Id: AnaEx01DetectorConstruction.hh,v 1.1.1.1 2000/09/14 11:37:21 barrand Exp $
// GEANT4 tag $Name: geant4-03-00 $
// GEANT4 tag $Name: geant4-03-01 $
//
//
@@ -6,7 +6,7 @@
// and all its terms.
//
// $Id: AnaEx01DetectorMessenger.hh,v 1.1.1.1 2000/09/14 11:37:21 barrand Exp $
// GEANT4 tag $Name: geant4-03-00 $
// GEANT4 tag $Name: geant4-03-01 $
//
//
@@ -6,7 +6,7 @@
// and all its terms.
//
// $Id: AnaEx01EventAction.hh,v 1.3 2000/11/10 14:12:07 gbarrand Exp $
// GEANT4 tag $Name: geant4-03-00 $
// GEANT4 tag $Name: geant4-03-01 $
//
//
@@ -6,7 +6,7 @@
// and all its terms.
//
// $Id: AnaEx01PhysicsList.hh,v 1.1.1.1 2000/09/14 11:37:21 barrand Exp $
// GEANT4 tag $Name: geant4-03-00 $
// GEANT4 tag $Name: geant4-03-01 $
//
//
@@ -6,7 +6,7 @@
// and all its terms.
//
// $Id: AnaEx01PrimaryGeneratorAction.hh,v 1.1.1.1 2000/09/14 11:37:21 barrand Exp $
// GEANT4 tag $Name: geant4-03-00 $
// GEANT4 tag $Name: geant4-03-01 $
//
//
@@ -6,7 +6,7 @@
// and all its terms.
//
// $Id: AnaEx01PrimaryGeneratorMessenger.hh,v 1.1.1.1 2000/09/14 11:37:21 barrand Exp $
// GEANT4 tag $Name: geant4-03-00 $
// GEANT4 tag $Name: geant4-03-01 $
//
//
@@ -6,7 +6,7 @@
// and all its terms.
//
// $Id: AnaEx01RunAction.hh,v 1.3 2000/11/10 14:12:07 gbarrand Exp $
// GEANT4 tag $Name: geant4-03-00 $
// GEANT4 tag $Name: geant4-03-01 $
//
//
@@ -6,7 +6,7 @@
// and all its terms.
//
// $Id: AnaEx01SteppingAction.hh,v 1.3 2000/11/10 14:12:07 gbarrand Exp $
// GEANT4 tag $Name: geant4-03-00 $
// GEANT4 tag $Name: geant4-03-01 $
//
//
@@ -6,7 +6,7 @@
// and all its terms.
//
// $Id: AnaEx01SteppingVerbose.hh,v 1.1.1.1 2000/09/14 11:37:21 barrand Exp $
// GEANT4 tag $Name: geant4-03-00 $
// GEANT4 tag $Name: geant4-03-01 $
//
//
//---------------------------------------------------------------
@@ -6,7 +6,7 @@
// and all its terms.
//
// $Id: AnaEx01VisManager.hh,v 1.1.1.1 2000/09/14 11:37:21 barrand Exp $
// GEANT4 tag $Name: geant4-03-00 $
// GEANT4 tag $Name: geant4-03-01 $
//
//
@@ -6,7 +6,7 @@
// and all its terms.
//
// $Id: AnaEx01AnalysisManager.cc,v 1.9 2000/12/06 13:08:03 barrand Exp $
// GEANT4 tag $Name: geant4-03-00 $
// GEANT4 tag $Name: geant4-03-01 $
//
//
// Guy Barrand 14th Septembre 2000.
@@ -6,7 +6,7 @@
// and all its terms.
//
// $Id: AnaEx01CalorHit.cc,v 1.1.1.1 2000/09/14 11:37:21 barrand Exp $
// GEANT4 tag $Name: geant4-03-00 $
// GEANT4 tag $Name: geant4-03-01 $
//
//
@@ -6,7 +6,7 @@
// and all its terms.
//
// $Id: AnaEx01CalorimeterSD.cc,v 1.1.1.1 2000/09/14 11:37:21 barrand Exp $
// GEANT4 tag $Name: geant4-03-00 $
// GEANT4 tag $Name: geant4-03-01 $
//
//
@@ -6,7 +6,7 @@
// and all its terms.
//
// $Id: AnaEx01DetectorConstruction.cc,v 1.1.1.1 2000/09/14 11:37:21 barrand Exp $
// GEANT4 tag $Name: geant4-03-00 $
// GEANT4 tag $Name: geant4-03-01 $
//
//
@@ -6,7 +6,7 @@
// and all its terms.
//
// $Id: AnaEx01DetectorMessenger.cc,v 1.1.1.1 2000/09/14 11:37:21 barrand Exp $
// GEANT4 tag $Name: geant4-03-00 $
// GEANT4 tag $Name: geant4-03-01 $
//
//
@@ -6,7 +6,7 @@
// and all its terms.
//
// $Id: AnaEx01EventAction.cc,v 1.3 2000/11/10 14:08:08 gbarrand Exp $
// GEANT4 tag $Name: geant4-03-00 $
// GEANT4 tag $Name: geant4-03-01 $
//
//
@@ -6,7 +6,7 @@
// and all its terms.
//
// $Id: AnaEx01PhysicsList.cc,v 1.1.1.1 2000/09/14 11:37:21 barrand Exp $
// GEANT4 tag $Name: geant4-03-00 $
// GEANT4 tag $Name: geant4-03-01 $
//
//
@@ -6,7 +6,7 @@
// and all its terms.
//
// $Id: AnaEx01PrimaryGeneratorAction.cc,v 1.1.1.1 2000/09/14 11:37:21 barrand Exp $
// GEANT4 tag $Name: geant4-03-00 $
// GEANT4 tag $Name: geant4-03-01 $
//
//
@@ -6,7 +6,7 @@
// and all its terms.
//
// $Id: AnaEx01PrimaryGeneratorMessenger.cc,v 1.1.1.1 2000/09/14 11:37:21 barrand Exp $
// GEANT4 tag $Name: geant4-03-00 $
// GEANT4 tag $Name: geant4-03-01 $
//
//
@@ -6,7 +6,7 @@
// and all its terms.
//
// $Id: AnaEx01RunAction.cc,v 1.3 2000/11/10 14:08:09 gbarrand Exp $
// GEANT4 tag $Name: geant4-03-00 $
// GEANT4 tag $Name: geant4-03-01 $
//
//
@@ -6,7 +6,7 @@
// and all its terms.
//
// $Id: AnaEx01SteppingAction.cc,v 1.3 2000/11/10 14:08:10 gbarrand Exp $
// GEANT4 tag $Name: geant4-03-00 $
// GEANT4 tag $Name: geant4-03-01 $
//
//
@@ -6,7 +6,7 @@
// and all its terms.
//
// $Id: AnaEx01SteppingVerbose.cc,v 1.1.1.1 2000/09/14 11:37:21 barrand Exp $
// GEANT4 tag $Name: geant4-03-00 $
// GEANT4 tag $Name: geant4-03-01 $
//
//
//---------------------------------------------------------------
@@ -6,7 +6,7 @@
// and all its terms.
//
// $Id: AnaEx01VisManager.cc,v 1.1.1.1 2000/09/14 11:37:21 barrand Exp $
// GEANT4 tag $Name: geant4-03-00 $
// GEANT4 tag $Name: geant4-03-01 $
//
//
// John Allison 24th January 1998.
@@ -1,4 +1,4 @@
# $Id: GNUmakefile,v 1.4 2000/12/07 11:43:03 maire Exp $
# $Id: GNUmakefile,v 1.5 2001/02/21 14:00:33 maire Exp $
# --------------------------------------------------------------
# GNUmakefile for examples module. Gabriele Cosmo, 06/04/98.
# --------------------------------------------------------------
@@ -16,4 +16,12 @@ all: lib bin
include $(G4INSTALL)/config/architecture.gmk
G4NOHIST := true
ifdef G4NOHIST
CPPFLAGS += -DG4NOHIST
else
LDFLAGS += -L$(CERN)/pro/lib
LOADLIBS += -lpacklib $(FCLIBS)
endif
include $(G4INSTALL)/config/binmake.gmk
@@ -1,4 +1,4 @@
$Id: History,v 1.7 2000/12/07 11:43:03 maire Exp $
$Id: History,v 1.11 2001/03/27 08:34:07 maire Exp $
-------------------------------------------------------------------
=========================================================
@@ -15,6 +15,19 @@ track of all tags.
* Reverse chronological order (last date on top), please *
----------------------------------------------------------
27-03-01 mma (testem1-V03-00-05)
- set cppflag G4NOHIST = true in gnumakefile
08-03-01 Hisaya (testem1-V03-00-04)
- adapted ProcessesCount to STL
21-02-01 mma (testem1-V03-00-03)
- hbook histograms restored
20-02-01 mma (testem1-V03-00-02)
- verbose stepping adapted for STL
- save rndm at begin of event
07-12-00 mma (testem1-V02-00-03 & testem-noHist)
remove hbook histograms: GNUmakefile,runAction,trackingAction,
steppingAction
@@ -1,4 +1,4 @@
$Id: README,v 1.1 1999/10/11 13:07:24 maire Exp $
$Id: README,v 1.3 2001/03/30 12:41:27 gcosmo Exp $
-------------------------------------------------------------------
=========================================================
@@ -90,13 +90,16 @@ $Id: README,v 1.1 1999/10/11 13:07:24 maire Exp $
7- HISTOGRAMS
Testem1 produces several histo which are saved as testem1.histo
Testem1 produces several histo which are saved as testem1.paw
Content of these histo:
1 : track length of a charged particle
2 : number of steps per track (charged particle)
3 : step length (charged particle)
Note that, histograms are disabled via the flag G4NOHIST in the GNUmakefile.
Currently, histograms in this example are implemented through the obsolete
CLHEP/Hist package, which is no longer supported. The implementation will
be replaced by direct call to the "analysis" module in a near future.
@@ -6,7 +6,7 @@
// and all its terms.
//
// $Id: TestEm1.cc,v 1.4 2000/12/06 13:21:48 maire Exp $
// GEANT4 tag $Name: geant4-03-00 $
// GEANT4 tag $Name: geant4-03-01 $
//
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.....
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.....
@@ -1,10 +1,10 @@
**********************************************
Geant4 version $Name: geant4-03-00 $
(30-Jun-2000)
Geant4 version $Name: geant4-03-01 $
(15-Dec-2000)
Copyright : Geant4 Collaboration
**********************************************
***** Table : Nb of materials = 8 *****
***** Table : Nb of materials = 9 *****
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 %
@@ -23,6 +23,9 @@
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: Silicon density: 2.330 g/cm3 temperature: 273.15 K pressure: 1.00 atm RadLength: 9.368 cm
---> Element: Silicon Z = 14.0 N = 28.1 A = 28.09 g/mole fractionMass: 100.00 % Abundance 100.00 %
Material: Iron density: 7.870 g/cm3 temperature: 273.15 K pressure: 1.00 atm RadLength: 1.759 cm
---> Element: Iron Z = 26.0 N = 55.9 A = 55.85 g/mole fractionMass: 100.00 % Abundance 100.00 %
@@ -63,13 +66,14 @@ eIoni: delta cross sections from Moller+Bhabha. Good description from 1 KeV to
material min.delta energy(keV)
Air 0.99
H2liquid 28.675
Water 81.507
liquidArgon 78.362
Aluminium 125.06
Iron 224.07
Lead 229.55
Uranium 296.06
H2liquid 28.089
Water 81.851
liquidArgon 79.954
Aluminium 125.02
Silicon 116.88
Iron 225.11
Lead 228.53
Uranium 294.24
eBrem: Total cross sections from a NEW parametrisation based on the EEDL data library.
Good description from 1 KeV to 100 GeV.
@@ -91,13 +95,14 @@ msc: Tables of transport mean free paths.
material min.delta energy(keV)
Air 0.99
H2liquid 28.675
Water 81.507
liquidArgon 78.362
Aluminium 125.06
Iron 224.07
Lead 229.55
Uranium 296.06
H2liquid 28.089
Water 81.851
liquidArgon 79.954
Aluminium 125.02
Silicon 116.88
Iron 225.11
Lead 228.53
Uranium 294.24
hIoni: Knock-on electron cross sections .
Good description above the mean excitation energy.
@@ -130,11 +135,12 @@ Cut in energy
Water 2.9 keV 347 keV
liquidArgon 6.18 keV 343 keV
Aluminium 6.89 keV 597 keV
Silicon 6.89 keV 541 keV
Iron 20.8 keV 1.28 MeV
Lead 101 keV 1.38 MeV
Uranium 110 keV 1.92 MeV
===================================================
# $Id: TestEm1.out,v 1.7 2000/11/24 10:36:58 stesting Exp $
# $Id: TestEm1.out,v 1.11 2001/03/30 09:02:57 stesting Exp $
#
# Macro file for "TestEm1.cc"
# (can be run in batch, without graphic)
@@ -176,11 +182,12 @@ eIoni: delta cross sections from Moller+Bhabha. Good description from 1 KeV to
Air 0.99
H2liquid 0.99
Water 3.2733
liquidArgon 3.7293
Aluminium 6.3003
Iron 10.422
Lead 8.9769
Uranium 11.54
liquidArgon 3.9154
Aluminium 6.2979
Silicon 5.8817
Iron 10.524
Lead 9.1135
Uranium 11.689
eBrem: Total cross sections from a NEW parametrisation based on the EEDL data library.
Good description from 1 KeV to 100 GeV.
@@ -204,11 +211,12 @@ msc: Tables of transport mean free paths.
Air 0.99
H2liquid 0.99
Water 3.2733
liquidArgon 3.7293
Aluminium 6.3003
Iron 10.422
Lead 8.9769
Uranium 11.54
liquidArgon 3.9154
Aluminium 6.2979
Silicon 5.8817
Iron 10.524
Lead 9.1135
Uranium 11.689
hIoni: Knock-on electron cross sections .
Good description above the mean excitation energy.
@@ -241,6 +249,7 @@ Cut in energy
Water 4.06 keV 3.27 keV
liquidArgon 9.08 keV 3.98 keV
Aluminium 9.99 keV 9.97 keV
Silicon 10 keV 8.45 keV
Iron 31.1 keV 43.3 keV
Lead 124 keV 42.8 keV
Uranium 143 keV 53.4 keV
@@ -265,18 +274,18 @@ Start Run processing.
Run terminated.
Run Summary
Number of events processed : 100
User=70.06s Real=75.54s Sys=4.95s
User=91.99s Real=97.75s Sys=5.73s
nb tracks/event neutral: 28.42 charged: 650.00
nb steps/event neutral: 151.89 charged: 1278.63
nb tracks/event neutral: 27.57 charged: 666.07
nb steps/event neutral: 144.93 charged: 2194.99
nb of process calls per event:
eIoni eBrem phot compt conv annihil
1251.55 25.69 27.03 123.47 1.39 1.39
eIoni eBrem conv annihil compt phot
2168.94 24.47 1.58 1.58 117.36 25.99
--------- Ranecu engine status ---------
Initial seed (index) = 0
Current couple of seeds = 1391858697, 202982242
Current couple of seeds = 1463312763, 65501812
----------------------------------------
G4 kernel has come to Quit state.
Deletion of G4 kernel class start.
@@ -6,7 +6,7 @@
// and all its terms.
//
// $Id: Em1DetectorConstruction.hh,v 1.2 1999/12/15 14:48:52 gunter Exp $
// GEANT4 tag $Name: geant4-03-00 $
// GEANT4 tag $Name: geant4-03-01 $
//
//
@@ -6,7 +6,7 @@
// and all its terms.
//
// $Id: Em1DetectorMessenger.hh,v 1.2 1999/12/15 14:48:53 gunter Exp $
// GEANT4 tag $Name: geant4-03-00 $
// GEANT4 tag $Name: geant4-03-01 $
//
//
@@ -6,7 +6,7 @@
// and all its terms.
//
// $Id: Em1EventAction.hh,v 1.2 1999/12/15 14:48:55 gunter Exp $
// GEANT4 tag $Name: geant4-03-00 $
// GEANT4 tag $Name: geant4-03-01 $
//
//
@@ -6,7 +6,7 @@
// and all its terms.
//
// $Id: Em1EventActionMessenger.hh,v 1.2 1999/12/15 14:48:55 gunter Exp $
// GEANT4 tag $Name: geant4-03-00 $
// GEANT4 tag $Name: geant4-03-01 $
//
//
@@ -6,7 +6,7 @@
// and all its terms.
//
// $Id: Em1PhysicsList.hh,v 1.2 1999/12/15 14:48:55 gunter Exp $
// GEANT4 tag $Name: geant4-03-00 $
// GEANT4 tag $Name: geant4-03-01 $
//
//
@@ -6,7 +6,7 @@
// and all its terms.
//
// $Id: Em1PhysicsListMessenger.hh,v 1.2 1999/12/15 14:48:55 gunter Exp $
// GEANT4 tag $Name: geant4-03-00 $
// GEANT4 tag $Name: geant4-03-01 $
//
//

Some files were not shown because too many files have changed in this diff Show More