Import Geant4 0.0.0 source tree
This commit is contained in:
@@ -0,0 +1,23 @@
|
||||
# $Id: GNUmakefile,v 2.1 1998/10/14 15:49:04 allison Exp $
|
||||
# --------------------------------------------------------------
|
||||
# GNUmakefile for examples module. Gabriele Cosmo, 06/04/98.
|
||||
# --------------------------------------------------------------
|
||||
|
||||
ifndef G4INSTALL
|
||||
G4INSTALL = ..
|
||||
endif
|
||||
|
||||
include $(G4INSTALL)/config/architecture.gmk
|
||||
|
||||
SUBDIRS = novice #extended #advanced
|
||||
|
||||
.PHONY : all clean clean_libs
|
||||
|
||||
all:
|
||||
@for dir in $(SUBDIRS); do (cd $$dir; $(MAKE)); done
|
||||
|
||||
clean:
|
||||
@for dir in $(SUBDIRS); do (cd $$dir; $(MAKE) clean); done
|
||||
|
||||
clean_libs:
|
||||
@for dir in $(SUBDIRS); do (cd $$dir; $(MAKE) clean_libs); done
|
||||
@@ -0,0 +1,97 @@
|
||||
$Id: History,v 2.22 1998/12/13 18:04:03 stesting Exp $
|
||||
-------------------------------------------------------------------
|
||||
|
||||
=========================================================
|
||||
Geant4 - an Object-Oriented Toolkit for Simulation in HEP
|
||||
=========================================================
|
||||
|
||||
Category History file
|
||||
---------------------
|
||||
This file should be used by G4 developers and category coordinators
|
||||
to briefly summarize all major modifications introduced in the code
|
||||
and keep track of all category-tags.
|
||||
It DOES NOT substitute the CVS log-message one should put at every
|
||||
committal in the CVS repository !
|
||||
|
||||
----------------------------------------------------------
|
||||
* Reverse chronological order (last date on top), please *
|
||||
----------------------------------------------------------
|
||||
|
||||
13th December 1998 John Allison (examples-00-04-03)
|
||||
- N04: New em processes for ions (Hans-Peter)
|
||||
- N05: Bug fix in ExN05CalorimeterSD (Marc).
|
||||
|
||||
8th December 1998 John Allison (examples-00-04-02)
|
||||
- Removed #include "g4templates.hh" from all main program files.
|
||||
- Small refinements to N02 - see N02/History.
|
||||
|
||||
30th November 1998 John Allison (examples-00-04-01)
|
||||
- Added initial / to commands in exampleN04.in.
|
||||
- Added VRML2 driver code to ExNnnVisManager.cc, nn = 02, 03.
|
||||
|
||||
21st November 1998 John Allison (examples-00-03-05)
|
||||
- Made ExN04Field compatible with G4Field.
|
||||
|
||||
14th October 1998 M.Asai (examples-00-03-04)
|
||||
- Moved N07/8/9 to E01/2/3. (John Allison)
|
||||
|
||||
14th October 1998 John Allison (examples-00-03-03)
|
||||
- Committed new reference files based on beta02-ref-01 + event-00-03-03
|
||||
+ examples-00-03-02 + vis-00-03-03 on sunasd1.
|
||||
|
||||
09th Octorber 1998 M.Asai (examples-00-03-02)
|
||||
- Replace N02 and N03.
|
||||
- Bug fix in N04.
|
||||
|
||||
26th September 1998 Michel Maire (examples-00-03-01)
|
||||
- removed any use of cin
|
||||
|
||||
27th August 1998 John Allison (examples-00-02-05)
|
||||
- Removed /vis~/camera/zoom 3 in N02 - coworks with vis-00-02-05.
|
||||
|
||||
August 26th, 1998 - John Allison (examples-00-02-04)
|
||||
- Backed out G4UIGAG as default - G4UIterminal is now default.
|
||||
|
||||
Aug 26, 98 M.Asai (examples-00-02-03)
|
||||
- Some modifications in exampleN02 and exampleN05 by H.Kurashige
|
||||
- Debugged in exampleN05
|
||||
- Rename classes in exampleN08
|
||||
|
||||
Aug 21, 98 J.Allison (examples-00-02-02)
|
||||
- Renamed classes in N06/7/8/9.
|
||||
|
||||
Aug 13, 98 M.Asai (examples-00-02-01)
|
||||
- Rename classes in exampleN02
|
||||
|
||||
July 21, 98 M.Asai (examples-00-01-10)
|
||||
- several bug fixes in exampleN02.
|
||||
- reference file of exampleN02 is updated.
|
||||
|
||||
July 20, 98 G.Cosmo (examples-00-01-09)
|
||||
- several fixes and updates of reference output files.
|
||||
|
||||
July 15, 98 M.Asai (examples-00-01-08)
|
||||
- some debugging, updates...
|
||||
|
||||
July 10, 98 G.Cosmo (examples-00-01-05)
|
||||
- N02: Updated reference I/O
|
||||
- N04: Updated PhysicsList
|
||||
- N06: Updated reference I/O and PhysicsList
|
||||
|
||||
July 10, 98 M.Asai (examples-00-01-04)
|
||||
- Updated reference I/O.
|
||||
|
||||
July 9, 98 G.Cosmo (examples-00-01-03)
|
||||
- Protected visualization code in N02 and N03 with G4VIS_USE
|
||||
- Added G4VIS_USE_DAWNFILE and G4VIS_USE_OPENGLWIN32 to N02 and
|
||||
N03 (J.Allison)
|
||||
|
||||
July 8, 98 M.Asai
|
||||
- Tagged as examples-00-01-02
|
||||
|
||||
22nd June 1998 John Allison
|
||||
- Changed G4BASE = ../../prototype to
|
||||
G4BASE = $(shell (cd ../../prototype; pwd))
|
||||
|
||||
10th June 1998 John Allison
|
||||
- Modified examples.gmk to use G4VIS_USE.gmk.
|
||||
@@ -0,0 +1,25 @@
|
||||
$Id: README,v 2.1 1998/08/03 17:23:57 gcosmo Exp $
|
||||
-------------------------------------------------------------------
|
||||
|
||||
=========================================================
|
||||
Geant4 - an Object-Oriented Toolkit for Simulation in HEP
|
||||
=========================================================
|
||||
|
||||
Examples module
|
||||
---------------
|
||||
|
||||
This module collects two sets of user examples aimed to demonstrate to
|
||||
the user how to make correct use of the GEANT4 toolkit by implementing
|
||||
in a correct way those user-classes which the user is supposed to
|
||||
customize in order to define his/her own simulation setup.
|
||||
One set of examples is oriented to "novice" users and covering all
|
||||
possible general use-cases typical of an "application"-oriented kind of
|
||||
development. An "advanced" set of examples (not yet available at the
|
||||
current time), will cover the use-cases typical of a "toolkit"-oriented
|
||||
kind of development.
|
||||
Most of the examples can be run both in interactive and batch mode, and
|
||||
input macro files (*.in) and reference output files (*.out) are provided.
|
||||
These examples are considered part of the validation procedure for the
|
||||
official releases of the GEANT4 toolkit, as "acceptance"-testing phase
|
||||
of the validation process.
|
||||
|
||||
@@ -0,0 +1,23 @@
|
||||
# $Id: GNUmakefile,v 2.0 1998/07/02 14:05:11 gunter Exp $
|
||||
# --------------------------------------------------------------
|
||||
# GNUmakefile for examples module. Gabriele Cosmo, 06/04/98.
|
||||
# --------------------------------------------------------------
|
||||
|
||||
ifndef G4INSTALL
|
||||
G4INSTALL = ../..
|
||||
endif
|
||||
|
||||
include $(G4INSTALL)/config/architecture.gmk
|
||||
|
||||
SUBDIRS = A01 A02 A03 A04 A05 A06
|
||||
|
||||
.PHONY : all clean clean_libs
|
||||
|
||||
all:
|
||||
@for dir in $(SUBDIRS); do (cd $$dir; $(MAKE)); done
|
||||
|
||||
clean:
|
||||
@for dir in $(SUBDIRS); do (cd $$dir; $(MAKE) clean); done
|
||||
|
||||
clean_libs:
|
||||
@for dir in $(SUBDIRS); do (cd $$dir; $(MAKE) clean_libs); done
|
||||
@@ -0,0 +1,10 @@
|
||||
$Id: README,v 2.0 1998/07/02 14:05:17 gunter Exp $
|
||||
-------------------------------------------------------------------
|
||||
|
||||
=========================================================
|
||||
Geant4 - an Object-Oriented Toolkit for Simulation in HEP
|
||||
=========================================================
|
||||
|
||||
Advanced Examples
|
||||
-----------------
|
||||
|
||||
@@ -0,0 +1,35 @@
|
||||
# $Id: GNUmakefile,v 1.1 1998/10/14 15:18:56 allison Exp $
|
||||
# --------------------------------------------------------------
|
||||
# GNUmakefile for tests module. Gabriele Cosmo, 27/06/98.
|
||||
# --------------------------------------------------------------
|
||||
|
||||
name := exampleE01
|
||||
G4TARGET := $(name)
|
||||
G4EXLIB := true
|
||||
|
||||
ifndef G4INSTALL
|
||||
G4INSTALL = ../../..
|
||||
endif
|
||||
|
||||
.PHONY: all
|
||||
all: lib bin
|
||||
|
||||
include $(G4INSTALL)/config/architecture.gmk
|
||||
|
||||
# Override some variables for binmake.gmk.
|
||||
#
|
||||
# INCFLAGS :=
|
||||
# LDLIBS :=
|
||||
|
||||
CPPFLAGS += \
|
||||
-I$(OBJY_DIR)/include \
|
||||
-I$(HEP_ODBMS_DIR)/include \
|
||||
-I$(HISTOODIR)/code
|
||||
LDFLAGS += \
|
||||
-L$(OBJY_DIR)/lib \
|
||||
-L$(HEP_ODBMS_DIR)/lib \
|
||||
-L$(HISTOODIR)/lib
|
||||
LOADLIBS += -lHistoxx -lHepODBMS -loo -lm
|
||||
|
||||
include $(G4INSTALL)/config/binmake.gmk
|
||||
|
||||
@@ -0,0 +1,42 @@
|
||||
$Id: History,v 1.1 1998/10/14 15:18:57 allison Exp $
|
||||
-------------------------------------------------------------------
|
||||
|
||||
=========================================================
|
||||
Geant4 - an Object-Oriented Toolkit for Simulation in HEP
|
||||
=========================================================
|
||||
|
||||
Novice Example 07 History file
|
||||
------------------------------
|
||||
This file should be used by the test developer to briefly
|
||||
summarize all major modifications introduced in the code and keep
|
||||
track of all tags.
|
||||
|
||||
----------------------------------------------------------
|
||||
* Reverse chronological order (last date on top), please *
|
||||
----------------------------------------------------------
|
||||
|
||||
14th October 1998 John Allison
|
||||
- Moved from N07.
|
||||
|
||||
25th August 1998 Evgueni.Tcherniaev@cern.ch
|
||||
- CPPFLAGS += ... -I$(HISTOODIR)/code
|
||||
LDFLAGS += ... -L$(HISTOODIR)/lib
|
||||
|
||||
- Changed p.Print(); to p.print();
|
||||
|
||||
21st August 1998 John Allison
|
||||
- Changed file names from N07* to ExN07*.
|
||||
|
||||
August 7th,1998 John Allison
|
||||
- Moved from test03 to exampleN07.
|
||||
|
||||
July 10, 1998, Evgueni.Tcherniaev@cern.ch
|
||||
- in test03.cc added:
|
||||
runManager->initialize();
|
||||
|
||||
- GNUmakefile now points to $(HISTOODIR)/../dev/code
|
||||
should be changed to $(HISTOODIR) for official release
|
||||
|
||||
June 27, 98 G. Cosmo
|
||||
- Created.
|
||||
|
||||
@@ -0,0 +1,47 @@
|
||||
$Id: README,v 1.1 1998/10/14 15:18:57 allison Exp $
|
||||
-------------------------------------------------------------------
|
||||
|
||||
=========================================================
|
||||
Geant4 - an Object-Oriented Toolkit for Simulation in HEP
|
||||
=========================================================
|
||||
|
||||
ExampleN07
|
||||
---------
|
||||
|
||||
This directory contains a GEANT4 example on how to create, fill,
|
||||
print and save histograms in a OODBMS.
|
||||
|
||||
The main program "exampleN07.cc" is a standard G4 main (no initialization
|
||||
of OODBMS or histos).
|
||||
|
||||
The run actions are overloaded:
|
||||
|
||||
- in BeginOfRunAction the federated data base and the data bases sessions
|
||||
are initialized and a transaction is opened;
|
||||
1d and 2d histograms are constructed;
|
||||
The name of the base name is "ExN07DB".
|
||||
|
||||
- in EndOfRunAction contents of the histograms are printed and
|
||||
the transaction is closed;
|
||||
|
||||
The stepping action is overloaded:
|
||||
|
||||
- in SteppingAction two histograms are accessed and filled.
|
||||
|
||||
The followings are the instruction to execute it for the case of HP-AFS.
|
||||
|
||||
0) Setting up the environment
|
||||
|
||||
http://wwwinfo.cern.ch/asdoc/lhcpp/SetUpUserEnvironment.html
|
||||
|
||||
1) Compilation/linking
|
||||
|
||||
% gmake
|
||||
|
||||
2) Execution
|
||||
|
||||
% ../../../bin/HP-AFS/exampleN07 > exampleN07.newout
|
||||
% diff exampleN07.out exampleN07.newout
|
||||
|
||||
Evgueni.Tcherniaev@cern.ch, 25.08.98
|
||||
|
||||
@@ -0,0 +1,31 @@
|
||||
// $Id: exampleE01.cc,v 1.2 1998/12/08 16:37:23 allison Exp $
|
||||
|
||||
#include "ExE01DetectorConstruction.hh"
|
||||
#include "ExE01RunAction.hh"
|
||||
#include "ExE01PrimaryGeneratorAction.hh"
|
||||
#include "ExE01PhysicsList.hh"
|
||||
#include "ExE01SteppingAction.hh"
|
||||
|
||||
#include "G4RunManager.hh"
|
||||
|
||||
int main(int ,char** ) {
|
||||
// Run manager
|
||||
G4RunManager * runManager = new G4RunManager;
|
||||
|
||||
// UserInitialization classes
|
||||
runManager->SetUserInitialization(new ExE01DetectorConstruction);
|
||||
runManager->SetUserInitialization(new ExE01PhysicsList);
|
||||
|
||||
// UserAction classes.
|
||||
runManager->SetUserAction(new ExE01RunAction);
|
||||
runManager->SetUserAction(new ExE01PrimaryGeneratorAction);
|
||||
runManager->SetUserAction(new ExE01SteppingAction);
|
||||
|
||||
// Event loop
|
||||
G4int n_event = 1000;
|
||||
runManager->Initialize();
|
||||
runManager->BeamOn(n_event);
|
||||
|
||||
delete runManager;
|
||||
return 0;
|
||||
}
|
||||
@@ -0,0 +1,175 @@
|
||||
ExE01PhysicsList::setCuts:CutLength : 1 (mm)
|
||||
TYPE : Histo1D
|
||||
TITLE : HepJamesRandom1
|
||||
BIN NUMBER : 100
|
||||
BIN WIDTH : 0.01
|
||||
|
||||
0.00e+00 3.88e+00 Y
|
||||
X POSITION BIN VALUE|--------------------------------------------------->
|
||||
0.000e+00 0 6.000e-02|
|
||||
1.000e-02 1 4.000e-02|
|
||||
2.000e-02 2 1.800e-01|XX
|
||||
3.000e-02 3 9.000e-02|X
|
||||
4.000e-02 4 1.500e-01|X
|
||||
5.000e-02 5 2.600e-01|XXX
|
||||
6.000e-02 6 2.500e-01|XXX
|
||||
7.000e-02 7 3.600e-01|XXXX
|
||||
8.000e-02 8 3.000e-01|XXX
|
||||
9.000e-02 9 4.900e-01|XXXXXX
|
||||
1.000e-01 10 6.000e-01|XXXXXXX
|
||||
1.100e-01 11 5.600e-01|XXXXXXX
|
||||
1.200e-01 12 6.400e-01|XXXXXXXX
|
||||
1.300e-01 13 1.110e+00|XXXXXXXXXXXXXX
|
||||
1.400e-01 14 1.140e+00|XXXXXXXXXXXXXX
|
||||
1.500e-01 15 1.500e+00|XXXXXXXXXXXXXXXXXXX
|
||||
1.600e-01 16 1.520e+00|XXXXXXXXXXXXXXXXXXX
|
||||
1.700e-01 17 1.750e+00|XXXXXXXXXXXXXXXXXXXXXXX
|
||||
1.800e-01 18 1.700e+00|XXXXXXXXXXXXXXXXXXXXXX
|
||||
1.900e-01 19 1.860e+00|XXXXXXXXXXXXXXXXXXXXXXXX
|
||||
2.000e-01 20 2.360e+00|XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
|
||||
2.100e-01 21 2.530e+00|XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
|
||||
2.200e-01 22 2.580e+00|XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
|
||||
2.300e-01 23 2.670e+00|XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
|
||||
2.400e-01 24 2.900e+00|XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
|
||||
2.500e-01 25 3.100e+00|XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
|
||||
2.600e-01 26 3.250e+00|XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
|
||||
2.700e-01 27 3.230e+00|XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
|
||||
2.800e-01 28 3.530e+00|XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
|
||||
2.900e-01 29 3.540e+00|XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
|
||||
3.000e-01 30 3.470e+00|XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
|
||||
3.100e-01 31 3.880e+00|XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
|
||||
3.200e-01 32 3.340e+00|XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
|
||||
3.300e-01 33 3.430e+00|XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
|
||||
3.400e-01 34 3.070e+00|XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
|
||||
3.500e-01 35 3.490e+00|XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
|
||||
3.600e-01 36 2.950e+00|XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
|
||||
3.700e-01 37 2.560e+00|XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
|
||||
3.800e-01 38 2.740e+00|XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
|
||||
3.900e-01 39 2.250e+00|XXXXXXXXXXXXXXXXXXXXXXXXXXXXX
|
||||
4.000e-01 40 2.110e+00|XXXXXXXXXXXXXXXXXXXXXXXXXXX
|
||||
4.100e-01 41 1.900e+00|XXXXXXXXXXXXXXXXXXXXXXXX
|
||||
4.200e-01 42 1.740e+00|XXXXXXXXXXXXXXXXXXXXXX
|
||||
4.300e-01 43 1.420e+00|XXXXXXXXXXXXXXXXXX
|
||||
4.400e-01 44 1.160e+00|XXXXXXXXXXXXXXX
|
||||
4.500e-01 45 1.040e+00|XXXXXXXXXXXXX
|
||||
4.600e-01 46 9.200e-01|XXXXXXXXXXXX
|
||||
4.700e-01 47 7.900e-01|XXXXXXXXXX
|
||||
4.800e-01 48 7.500e-01|XXXXXXXXX
|
||||
4.900e-01 49 6.200e-01|XXXXXXXX
|
||||
5.000e-01 50 5.400e-01|XXXXXXX
|
||||
5.100e-01 51 3.800e-01|XXXX
|
||||
5.200e-01 52 2.900e-01|XXX
|
||||
5.300e-01 53 2.000e-01|XX
|
||||
5.400e-01 54 2.000e-01|XX
|
||||
5.500e-01 55 1.200e-01|X
|
||||
5.600e-01 56 6.000e-02|
|
||||
5.700e-01 57 5.000e-02|
|
||||
5.800e-01 58 4.000e-02|
|
||||
5.900e-01 59 8.000e-02|X
|
||||
6.000e-01 60 2.000e-02|
|
||||
6.100e-01 61 0.000e+00|
|
||||
6.200e-01 62 1.000e-02|
|
||||
6.300e-01 63 1.000e-02|
|
||||
6.400e-01 64 0.000e+00|
|
||||
6.500e-01 65 0.000e+00|
|
||||
6.600e-01 66 0.000e+00|
|
||||
6.700e-01 67 0.000e+00|
|
||||
6.800e-01 68 0.000e+00|
|
||||
6.900e-01 69 0.000e+00|
|
||||
7.000e-01 70 0.000e+00|
|
||||
7.100e-01 71 0.000e+00|
|
||||
7.200e-01 72 0.000e+00|
|
||||
7.300e-01 73 0.000e+00|
|
||||
7.400e-01 74 0.000e+00|
|
||||
7.500e-01 75 0.000e+00|
|
||||
7.600e-01 76 0.000e+00|
|
||||
7.700e-01 77 0.000e+00|
|
||||
7.800e-01 78 0.000e+00|
|
||||
7.900e-01 79 0.000e+00|
|
||||
8.000e-01 80 0.000e+00|
|
||||
8.100e-01 81 0.000e+00|
|
||||
8.200e-01 82 0.000e+00|
|
||||
8.300e-01 83 0.000e+00|
|
||||
8.400e-01 84 0.000e+00|
|
||||
8.500e-01 85 0.000e+00|
|
||||
8.600e-01 86 0.000e+00|
|
||||
8.700e-01 87 0.000e+00|
|
||||
8.800e-01 88 0.000e+00|
|
||||
8.900e-01 89 0.000e+00|
|
||||
9.000e-01 90 0.000e+00|
|
||||
9.100e-01 91 0.000e+00|
|
||||
9.200e-01 92 0.000e+00|
|
||||
9.300e-01 93 0.000e+00|
|
||||
9.400e-01 94 0.000e+00|
|
||||
9.500e-01 95 0.000e+00|
|
||||
9.600e-01 96 0.000e+00|
|
||||
9.700e-01 97 0.000e+00|
|
||||
9.800e-01 98 0.000e+00|
|
||||
9.900e-01 99 0.000e+00|
|
||||
X |
|
||||
V
|
||||
ENTRIES : 9000 TOTAL C. : 8.988e+01 NEQUIVAL : 8.988e+03
|
||||
MEAN F.T.: 3.003e-01 MEAN B.C.: 3.003e-01 UNDERFLOW: 1.200e-01
|
||||
RMS F.T. : 1.003e-01 RMS B.C. : 1.003e-01 OVERFLOW : 0.000e+00
|
||||
TYPE : Histo2D
|
||||
TITLE : HepJamesVsDRand48
|
||||
X: BINS : 40 WIDTH : 2.500e-02 MIN : 0.000e+00 MAX : 1.000e+00
|
||||
Y: BINS : 40 WIDTH : 2.500e-02 MIN : 0.000e+00 MAX : 1.000e+00
|
||||
|
||||
|
||||
0 1 2 3
|
||||
0123456789012345678901234567890123456789
|
||||
******************************************
|
||||
* *
|
||||
0 * ........................................ *
|
||||
1 * ........................................ *
|
||||
2 * ........................................ *
|
||||
3 * ........................................ *
|
||||
4 * ........................................ *
|
||||
5 * ........................................ *
|
||||
6 * ........................................ *
|
||||
7 * ........................................ *
|
||||
8 * ........................................ *
|
||||
9 * ........................................ *
|
||||
10 * ........................................ *
|
||||
11 * ........................................ *
|
||||
12 * ........................................ *
|
||||
13 * ........................................ *
|
||||
14 * ........................................ *
|
||||
15 * ........................................ *
|
||||
16 * ........................................ *
|
||||
17 * ........................................ *
|
||||
18 * ............++.......................... *
|
||||
19 * ..........++++.++....................... *
|
||||
20 * .......+22++22++++...................... *
|
||||
21 * ...++.2+2+233323+2...................... *
|
||||
22 * .....+224334444222..+................... *
|
||||
23 * ..+.+223447786642322.................... *
|
||||
24 * .....+3466997984633..................... *
|
||||
25 * ..++22457A9ACAA85332+................... *
|
||||
26 * ..+++45779DBFA778523+................... *
|
||||
27 * ....+37688DCBCA96422+................... *
|
||||
28 * ...+2467AAADE9DA6443++.................. *
|
||||
29 * ...+2454999ACB985332+................... *
|
||||
30 * ...++2445AAB9B9863+2+................... *
|
||||
31 * ...++2245568878553+++................... *
|
||||
32 * .....2235556765332+2.................... *
|
||||
33 * .....++23345343422+..................... *
|
||||
34 * .....++.+23322232++..................... *
|
||||
35 * .......+.2+2+2+++....................... *
|
||||
36 * .........++++.+..+...................... *
|
||||
37 * ...........++++......................... *
|
||||
38 * ........................................ *
|
||||
39 * ........................................ *
|
||||
* *
|
||||
******************************************
|
||||
|
||||
ENTRIES : 9000 Z MIN : 0
|
||||
TOTAL C. : 89.8 Z STEP : 0.068
|
||||
NEQUIVAL : 8.98e+03 Z SCALE : .+23456789ABCDE
|
||||
|
||||
0 | 0.05 | 0
|
||||
-----------|------------|-----------
|
||||
0.12 | 89.7 | 0
|
||||
-----------|------------|-----------
|
||||
0 | 0 | 0
|
||||
@@ -0,0 +1,34 @@
|
||||
|
||||
#ifndef ExE01DetectorConstruction_h
|
||||
#define ExE01DetectorConstruction_h 1
|
||||
|
||||
#include "G4VUserDetectorConstruction.hh"
|
||||
#include "globals.hh"
|
||||
|
||||
class ExE01DetectorConstruction : public G4VUserDetectorConstruction
|
||||
{
|
||||
public:
|
||||
ExE01DetectorConstruction();
|
||||
~ExE01DetectorConstruction();
|
||||
|
||||
public:
|
||||
G4VPhysicalVolume* Construct();
|
||||
|
||||
private:
|
||||
G4double expHall_x;
|
||||
G4double expHall_y;
|
||||
G4double expHall_z;
|
||||
|
||||
G4double calBox_x;
|
||||
G4double calBox_y;
|
||||
G4double calBox_z;
|
||||
G4double rotAngle;
|
||||
G4double calPos;
|
||||
|
||||
G4double trackerRadius;
|
||||
G4double trackerHight;
|
||||
G4double trackerPos;
|
||||
};
|
||||
|
||||
#endif
|
||||
|
||||
@@ -0,0 +1,37 @@
|
||||
// $Id: ExE01PhysicsList.hh,v 1.1 1998/10/14 15:19:38 allison Exp $
|
||||
// ------------------------------------------------------------
|
||||
#ifndef ExE01PhysicsList_h
|
||||
#define ExE01PhysicsList_h 1
|
||||
|
||||
#include "G4VUserPhysicsList.hh"
|
||||
#include "globals.hh"
|
||||
|
||||
class ExE01PhysicsList: public G4VUserPhysicsList
|
||||
{
|
||||
public:
|
||||
ExE01PhysicsList();
|
||||
virtual ~ExE01PhysicsList();
|
||||
|
||||
protected:
|
||||
// Construct particle and physics
|
||||
virtual void ConstructParticle();
|
||||
virtual void ConstructProcess();
|
||||
|
||||
//
|
||||
virtual void SetCuts(G4double cut);
|
||||
|
||||
protected:
|
||||
// these methods Construct particles
|
||||
virtual void ConstructBosons();
|
||||
virtual void ConstructLeptons();
|
||||
|
||||
protected:
|
||||
// these methods Construct physics processes and register them
|
||||
virtual void ConstructEM();
|
||||
|
||||
};
|
||||
|
||||
#endif
|
||||
|
||||
|
||||
|
||||
@@ -0,0 +1,25 @@
|
||||
|
||||
#ifndef ExE01PrimaryGeneratorAction_h
|
||||
#define ExE01PrimaryGeneratorAction_h 1
|
||||
|
||||
#include "G4VUserPrimaryGeneratorAction.hh"
|
||||
|
||||
class G4ParticleGun;
|
||||
class G4Event;
|
||||
|
||||
class ExE01PrimaryGeneratorAction : public G4VUserPrimaryGeneratorAction
|
||||
{
|
||||
public:
|
||||
ExE01PrimaryGeneratorAction();
|
||||
~ExE01PrimaryGeneratorAction();
|
||||
|
||||
public:
|
||||
void GeneratePrimaries(G4Event* anEvent);
|
||||
|
||||
private:
|
||||
G4ParticleGun* particleGun;
|
||||
};
|
||||
|
||||
#endif
|
||||
|
||||
|
||||
@@ -0,0 +1,35 @@
|
||||
// $Id: ExE01RunAction.hh,v 1.1 1998/10/14 15:19:39 allison Exp $
|
||||
|
||||
#ifndef ExE01RunAction_h
|
||||
#define ExE01RunAction_h 1
|
||||
|
||||
#include "G4UserRunAction.hh"
|
||||
#include "globals.hh"
|
||||
|
||||
#include "HepODBMS/clustering/HepDbApplication.h"
|
||||
#include "histograms.h"
|
||||
class G4Run;
|
||||
|
||||
class ExE01RunAction : public G4UserRunAction
|
||||
{
|
||||
public:
|
||||
ExE01RunAction() { runIDcounter = 0; }
|
||||
~ExE01RunAction() {}
|
||||
|
||||
void BeginOfRunAction(G4Run* aRun);
|
||||
void EndOfRunAction(G4Run* aRun);
|
||||
|
||||
static HepRef(Histo1D) get_1d() { return myHisto1D; }
|
||||
static HepRef(Histo2D) Get2d() { return myHisto2D; }
|
||||
|
||||
private:
|
||||
G4int runIDcounter;
|
||||
|
||||
static HepRef(Histo1D) myHisto1D;
|
||||
static HepRef(Histo2D) myHisto2D;
|
||||
|
||||
HepDbApplication dbApp;
|
||||
};
|
||||
|
||||
#endif
|
||||
|
||||
@@ -0,0 +1,24 @@
|
||||
// $Id: ExE01SteppingAction.hh,v 1.1 1998/10/14 15:19:40 allison Exp $
|
||||
|
||||
#ifndef ExE01SteppingAction_h
|
||||
#define ExE01SteppingAction_h 1
|
||||
|
||||
#include "G4UserSteppingAction.hh"
|
||||
#include "globals.hh"
|
||||
#include "Randomize.hh"
|
||||
|
||||
#include "histograms.h"
|
||||
|
||||
class ExE01SteppingAction : public G4UserSteppingAction {
|
||||
private:
|
||||
HepJamesRandom theJamesEngine;
|
||||
DRand48Engine theDRand48Engine;
|
||||
|
||||
public:
|
||||
ExE01SteppingAction(){};
|
||||
~ExE01SteppingAction(){};
|
||||
|
||||
void UserSteppingAction();
|
||||
};
|
||||
|
||||
#endif
|
||||
@@ -0,0 +1,102 @@
|
||||
|
||||
#include "ExE01DetectorConstruction.hh"
|
||||
|
||||
#include "G4Material.hh"
|
||||
#include "G4MaterialTable.hh"
|
||||
#include "G4Element.hh"
|
||||
#include "G4ElementTable.hh"
|
||||
#include "G4Box.hh"
|
||||
#include "G4Tubs.hh"
|
||||
#include "G4LogicalVolume.hh"
|
||||
#include "G4RotationMatrix.hh"
|
||||
#include "G4ThreeVector.hh"
|
||||
#include "G4Transform3D.hh"
|
||||
#include "G4PVPlacement.hh"
|
||||
|
||||
ExE01DetectorConstruction::ExE01DetectorConstruction()
|
||||
{
|
||||
expHall_x = 600.*cm;
|
||||
expHall_y = 600.*cm;
|
||||
expHall_z = 600.*cm;
|
||||
|
||||
calBox_x = 50.*cm;
|
||||
calBox_y = 50.*cm;
|
||||
calBox_z = 50.*cm;
|
||||
rotAngle = 30.*deg;
|
||||
calPos = 200.*cm;
|
||||
|
||||
trackerRadius = 50.*cm;
|
||||
trackerHight = 100.*cm;
|
||||
trackerPos = -200.*cm;
|
||||
}
|
||||
|
||||
ExE01DetectorConstruction::~ExE01DetectorConstruction()
|
||||
{;}
|
||||
|
||||
G4VPhysicalVolume* ExE01DetectorConstruction::Construct()
|
||||
{
|
||||
|
||||
//------------------------------------------------------ materials
|
||||
|
||||
G4double a, iz, z, density;
|
||||
G4String name, symbol;
|
||||
G4int nel;
|
||||
|
||||
a = 14.01*g/mole;
|
||||
G4Element* elN = new G4Element(name="Nitrogen", symbol="N", iz=7., a);
|
||||
a = 16.00*g/mole;
|
||||
G4Element* elO = new G4Element(name="Oxygen", symbol="O", iz=8., a);
|
||||
|
||||
density = 1.29e-03*g/cm3;
|
||||
G4Material* Air = new G4Material(name="Air", density, nel=2);
|
||||
Air->AddElement(elN, .7);
|
||||
Air->AddElement(elO, .3);
|
||||
|
||||
a = 207.19*g/mole;
|
||||
density = 11.35*g/cm3;
|
||||
G4Material* Lead = new G4Material(name="Lead", z=82., a, density);
|
||||
|
||||
a = 39.95*g/mole;
|
||||
density = 1.782e-03*g/cm3;
|
||||
G4Material* Ar = new G4Material(name="ArgonGas", z=18., a, density);
|
||||
|
||||
//------------------------------------------------------ volumes
|
||||
|
||||
//------------------------------ experimental hall
|
||||
G4Box * experimantalHall_box
|
||||
= new G4Box("expHall_b",expHall_x,expHall_y,expHall_z);
|
||||
G4LogicalVolume * experimantalHall_log
|
||||
= new G4LogicalVolume(experimantalHall_box,Air,"expHall_L",0,0,0);
|
||||
G4VPhysicalVolume * experimantalHall_phys
|
||||
= new G4PVPlacement(0,G4ThreeVector(),"expHall_P",
|
||||
experimantalHall_log,0,false,0);
|
||||
|
||||
//------------------------------ calorimeter boxes
|
||||
G4Box * calorimeter_box
|
||||
= new G4Box("calorimeter_b",calBox_x,calBox_y,calBox_z);
|
||||
G4LogicalVolume * calorimeter_log
|
||||
= new G4LogicalVolume(calorimeter_box,Lead,"calo_L",0,0,0);
|
||||
for(G4int i=0;i<3;i++)
|
||||
{
|
||||
G4RotationMatrix rm;
|
||||
rm.rotateZ(i*rotAngle);
|
||||
new G4PVPlacement(G4Transform3D(rm,G4ThreeVector(0.*cm,i*calPos,0.*cm)),
|
||||
"calo_phys",calorimeter_log,experimantalHall_phys,
|
||||
false,i);
|
||||
}
|
||||
|
||||
//------------------------------ tracker tube
|
||||
G4Tubs * tracker_tube
|
||||
= new G4Tubs("tracker_tube",0.*cm,trackerRadius,trackerHight,
|
||||
0.*deg,360.*deg);
|
||||
G4LogicalVolume * tracker_log
|
||||
= new G4LogicalVolume(tracker_tube,Ar,"tracker_L",0,0,0);
|
||||
new G4PVPlacement(0,G4ThreeVector(0.*cm,trackerPos,0.*cm),
|
||||
"tracker_phys",tracker_log,experimantalHall_phys,
|
||||
false,0);
|
||||
|
||||
//------------------------------------------------------------------
|
||||
|
||||
return experimantalHall_phys;
|
||||
}
|
||||
|
||||
@@ -0,0 +1,129 @@
|
||||
// $Id: ExE01PhysicsList.cc,v 1.1 1998/10/14 15:20:10 allison Exp $
|
||||
|
||||
#include "globals.hh"
|
||||
#include "ExE01PhysicsList.hh"
|
||||
#include "G4ParticleDefinition.hh"
|
||||
#include "G4ParticleWithCuts.hh"
|
||||
#include "G4ProcessManager.hh"
|
||||
#include "G4ProcessVector.hh"
|
||||
#include "G4ParticleTypes.hh"
|
||||
#include "G4ParticleTable.hh"
|
||||
#include "G4Material.hh"
|
||||
#include "G4MaterialTable.hh"
|
||||
#include "G4ios.hh"
|
||||
#include <iomanip.h>
|
||||
|
||||
|
||||
ExE01PhysicsList::ExE01PhysicsList(): G4VUserPhysicsList()
|
||||
{
|
||||
SetVerboseLevel(1);
|
||||
}
|
||||
|
||||
ExE01PhysicsList::~ExE01PhysicsList()
|
||||
{
|
||||
}
|
||||
|
||||
void ExE01PhysicsList::ConstructParticle()
|
||||
{
|
||||
// In this method, static member functions should be called
|
||||
// for all particles which you want to use.
|
||||
// This ensures that objects of these particle types will be
|
||||
// created in the program.
|
||||
|
||||
ConstructBosons();
|
||||
ConstructLeptons();
|
||||
|
||||
}
|
||||
|
||||
void ExE01PhysicsList::ConstructBosons()
|
||||
{
|
||||
// pseudo-particles
|
||||
G4Geantino::GeantinoDefinition();
|
||||
G4ChargedGeantino::ChargedGeantinoDefinition();
|
||||
|
||||
// gamma
|
||||
G4Gamma::GammaDefinition();
|
||||
|
||||
// optical photon
|
||||
G4OpticalPhoton::OpticalPhotonDefinition();
|
||||
}
|
||||
|
||||
void ExE01PhysicsList::ConstructLeptons()
|
||||
{
|
||||
// leptons
|
||||
G4Electron::ElectronDefinition();
|
||||
G4Positron::PositronDefinition();
|
||||
G4NeutrinoE::NeutrinoEDefinition();
|
||||
G4AntiNeutrinoE::AntiNeutrinoEDefinition();
|
||||
}
|
||||
|
||||
void ExE01PhysicsList::ConstructProcess()
|
||||
{
|
||||
AddTransportation();
|
||||
ConstructEM();
|
||||
}
|
||||
|
||||
#include "G4ComptonScattering.hh"
|
||||
#include "G4GammaConversion.hh"
|
||||
#include "G4PhotoElectricEffect.hh"
|
||||
|
||||
#include "G4MultipleScattering.hh"
|
||||
|
||||
#include "G4eIonisation.hh"
|
||||
#include "G4eBremsstrahlung.hh"
|
||||
#include "G4eplusAnnihilation.hh"
|
||||
|
||||
void ExE01PhysicsList::ConstructEM()
|
||||
{
|
||||
theParticleIterator->reset();
|
||||
while( (*theParticleIterator)() ){
|
||||
G4ParticleDefinition* particle = theParticleIterator->value();
|
||||
G4ProcessManager* pmanager = particle->GetProcessManager();
|
||||
G4String particleName = particle->GetParticleName();
|
||||
|
||||
if (particleName == "gamma") {
|
||||
// gamma
|
||||
// Construct processes for gamma
|
||||
pmanager->AddDiscreteProcess(new G4GammaConversion());
|
||||
pmanager->AddDiscreteProcess(new G4ComptonScattering());
|
||||
pmanager->AddDiscreteProcess(new G4PhotoElectricEffect());
|
||||
|
||||
} else if (particleName == "e-") {
|
||||
//electron
|
||||
// Construct processes for electron
|
||||
pmanager->AddProcess(new G4MultipleScattering(),-1,1,1);
|
||||
pmanager->AddProcess(new G4eIonisation(),-1,2,2);
|
||||
pmanager->AddProcess(new G4eBremsstrahlung(),-1,-1,3);
|
||||
|
||||
} else if (particleName == "e+") {
|
||||
//positron
|
||||
// Construct processes for positron
|
||||
pmanager->AddProcess(new G4MultipleScattering(),-1,1,1);
|
||||
|
||||
pmanager->AddProcess(new G4eIonisation(),-1,2,2);
|
||||
pmanager->AddProcess(new G4eBremsstrahlung(),-1,-1,3);
|
||||
pmanager->AddProcess(new G4eplusAnnihilation(),0,-1,4);
|
||||
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
void ExE01PhysicsList::SetCuts(G4double cut)
|
||||
{
|
||||
if (verboseLevel >0){
|
||||
G4cout << "ExE01PhysicsList::SetCuts:";
|
||||
G4cout << "CutLength : " << cut/mm << " (mm)" << endl;
|
||||
}
|
||||
|
||||
// set cut values for gamma at first and for e- second and next for e+,
|
||||
// because some processes for e+/e- need cut values for gamma
|
||||
SetCutValue(cut, "gamma");
|
||||
SetCutValue(cut, "e-");
|
||||
SetCutValue(cut, "e+");
|
||||
|
||||
SetCutValueForOthers(cut);
|
||||
|
||||
if (verboseLevel>1) {
|
||||
DumpCutValuesTable();
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,36 @@
|
||||
|
||||
#include "ExE01PrimaryGeneratorAction.hh"
|
||||
|
||||
#include "G4Event.hh"
|
||||
#include "G4ParticleGun.hh"
|
||||
#include "G4ParticleTable.hh"
|
||||
#include "G4ParticleDefinition.hh"
|
||||
#include "globals.hh"
|
||||
|
||||
ExE01PrimaryGeneratorAction::ExE01PrimaryGeneratorAction()
|
||||
{
|
||||
G4int n_particle = 1;
|
||||
particleGun = new G4ParticleGun(n_particle);
|
||||
}
|
||||
|
||||
ExE01PrimaryGeneratorAction::~ExE01PrimaryGeneratorAction()
|
||||
{
|
||||
delete particleGun;
|
||||
}
|
||||
|
||||
void ExE01PrimaryGeneratorAction::GeneratePrimaries(G4Event* anEvent)
|
||||
{
|
||||
G4ParticleTable* particleTable = G4ParticleTable::GetParticleTable();
|
||||
G4String particleName;
|
||||
G4ParticleDefinition* particle
|
||||
= particleTable->FindParticle(particleName="geantino");
|
||||
particleGun->SetParticleDefinition(particle);
|
||||
|
||||
particleGun->SetParticleMomentumDirection(G4ThreeVector(0.,1.,0.));
|
||||
particleGun->SetParticleEnergy(100.*GeV);
|
||||
particleGun->SetParticlePosition(G4ThreeVector(0.*cm,-300.*cm,0.*cm));
|
||||
|
||||
particleGun->GeneratePrimaryVertex(anEvent);
|
||||
}
|
||||
|
||||
|
||||
@@ -0,0 +1,51 @@
|
||||
// $Id: ExE01RunAction.cc,v 1.1 1998/10/14 15:20:12 allison Exp $
|
||||
|
||||
#include "ExE01RunAction.hh"
|
||||
#include "G4Run.hh"
|
||||
#include "G4UImanager.hh"
|
||||
#include "G4ios.hh"
|
||||
|
||||
HepRef(Histo1D) ExE01RunAction::myHisto1D;
|
||||
HepRef(Histo2D) ExE01RunAction::myHisto2D;
|
||||
|
||||
void ExE01RunAction::BeginOfRunAction(G4Run* aRun)
|
||||
{
|
||||
aRun->SetRunID(runIDcounter++);
|
||||
|
||||
G4UImanager* UI = G4UImanager::GetUIpointer();
|
||||
UI->ApplyCommand("/event/Verbose 0");
|
||||
UI->ApplyCommand("/tracking/Verbose 0");
|
||||
|
||||
dbApp.Init();
|
||||
dbApp.startUpdate();
|
||||
|
||||
HepDatabaseRef dbH = dbApp.db("ExE01DB");
|
||||
|
||||
// Number of histogram bins
|
||||
int nBins1d = 100;
|
||||
int nBins2d = 40;
|
||||
|
||||
// Limits for values
|
||||
double low = 0, high = 1;
|
||||
double xlow = 0, xhigh = 1, ylow = 0, yhigh = 1;
|
||||
|
||||
myHisto1D = new(dbH)
|
||||
Histo1D("HepJamesRandom1", nBins1d, low, high);
|
||||
|
||||
myHisto2D = new(dbH)
|
||||
Histo2D("HepJamesVsDRand48", nBins2d, xlow, xhigh, nBins2d, ylow, yhigh);
|
||||
}
|
||||
|
||||
void ExE01RunAction::EndOfRunAction(G4Run* aRun)
|
||||
{
|
||||
// Print histograms
|
||||
HistPrintout p(G4cout);
|
||||
|
||||
p.print(*myHisto1D);
|
||||
p.print(*myHisto2D);
|
||||
|
||||
// commit changes to Objectivty database
|
||||
dbApp.commit();
|
||||
}
|
||||
|
||||
|
||||
@@ -0,0 +1,22 @@
|
||||
// $Id: ExE01SteppingAction.cc,v 1.1 1998/10/14 15:20:14 allison Exp $
|
||||
|
||||
#include "ExE01SteppingAction.hh"
|
||||
#include "ExE01RunAction.hh"
|
||||
|
||||
void ExE01SteppingAction::UserSteppingAction(){
|
||||
|
||||
HepRef(Histo1D) h1 = ExE01RunAction::get_1d();
|
||||
HepRef(Histo2D) h2 = ExE01RunAction::Get2d();
|
||||
|
||||
HepRandom::setTheEngine(&theJamesEngine);
|
||||
|
||||
double james = RandGauss::shoot(0.3,0.1);
|
||||
h1->fill(james,0.01);
|
||||
|
||||
HepRandom::setTheEngine(&theDRand48Engine);
|
||||
|
||||
double d48 = RandGauss::shoot(0.7,0.1);
|
||||
h2->fill(james,d48,0.01);
|
||||
}
|
||||
|
||||
|
||||
@@ -0,0 +1,53 @@
|
||||
# $Id: GNUmakefile,v 1.1 1998/10/14 15:23:06 allison Exp $
|
||||
# --------------------------------------------------------------
|
||||
# GNUmakefile for tests module. Gabriele Cosmo, 27/06/98.
|
||||
# --------------------------------------------------------------
|
||||
# You must have unique G4EXAMPLE_FDID assigned by your local
|
||||
# manager of Objectivity/DB lock server.
|
||||
#
|
||||
# G4EXAMPLE_BOOT is defined as $HOME/G4EXAMPLE by default.
|
||||
|
||||
name := exampleE02
|
||||
G4ODBMS := true
|
||||
G4TARGET := $(name)
|
||||
G4EXLIB := true
|
||||
|
||||
ifndef G4INSTALL
|
||||
G4INSTALL = ../../..
|
||||
endif
|
||||
|
||||
.PHONY: all cleandb
|
||||
all: lib bin
|
||||
|
||||
include $(G4INSTALL)/config/architecture.gmk
|
||||
|
||||
include $(G4INSTALL)/config/binmake.gmk
|
||||
|
||||
CPPFLAGS += \
|
||||
-Iinclude \
|
||||
-I$(G4TMPDIR)
|
||||
|
||||
test:
|
||||
@echo $(CPPFLAGS)
|
||||
|
||||
# --------------------------------------------------------------
|
||||
|
||||
# override the target all, and warn if G4ODBMS flag is not defined.
|
||||
ifndef G4ODBMS
|
||||
all:
|
||||
@echo Error - Persistency requires G4ODBMS and related database setup.
|
||||
exit 1
|
||||
endif
|
||||
|
||||
cleandb:
|
||||
ifndef G4EXAMPLE_FDID
|
||||
@echo G4EXAMPLE_FDID is not defined. Stop.
|
||||
exit 1
|
||||
endif
|
||||
@rm -f $(G4EXAMPLE_BOOT_DIR)/G4EXAMPLE
|
||||
@rm -f $(G4EXAMPLE_BOOT_DIR)/G4EXAMPLE.FDDB
|
||||
@rm -f $(G4EXAMPLE_BOOT_DIR)/*.G4EXAMPLE.DB
|
||||
@echo Copying schema file to $(G4EXAMPLE_BOOT) for FDID $(G4EXAMPLE_FDID)
|
||||
@$(HEP_ODBMS_DIR)/etc/getdb $(G4SCHEMA_DIR)/G4SCHEMA \
|
||||
$(G4EXAMPLE_BOOT) $(G4EXAMPLE_FDID)
|
||||
|
||||
@@ -0,0 +1,52 @@
|
||||
$Id: History,v 1.2 1998/11/14 13:39:47 morita Exp $
|
||||
-------------------------------------------------------------------
|
||||
|
||||
=========================================================
|
||||
Geant4 - an Object-Oriented Toolkit for Simulation in HEP
|
||||
=========================================================
|
||||
|
||||
Novice Example 07 History file
|
||||
------------------------------
|
||||
This file should be used by the test developer to briefly
|
||||
summarize all major modifications introduced in the code and keep
|
||||
track of all tags.
|
||||
|
||||
----------------------------------------------------------
|
||||
* Reverse chronological order (last date on top), please *
|
||||
----------------------------------------------------------
|
||||
|
||||
14th November 1998 Y.Morita
|
||||
- Modified from N08 to E02 (exampleE02-00-03-01)
|
||||
|
||||
14th October 1998 John Allison
|
||||
- Moved from N08.
|
||||
|
||||
25th August 1998 Y.Morita
|
||||
- tagged (exampleN08-00-02-02)
|
||||
|
||||
24th August 1998 Y.Morita
|
||||
- Fixed typo on exampleN08.cc
|
||||
- script cleanup on exampleN08run
|
||||
|
||||
21st August 1998 John Allison
|
||||
- Renamed file My* to ExN08*.
|
||||
|
||||
August 7th, 1998 John Allison
|
||||
- Moved from test04.
|
||||
|
||||
July 15, 98 Y. Morita
|
||||
- GNUmakefile cleandb target revised
|
||||
- README new instructions
|
||||
- g4odbms_setup.csh example setup
|
||||
- test04.cc bug fix
|
||||
|
||||
July 14, 98 Y. Morita
|
||||
- Geometry persistency incorporated.
|
||||
|
||||
July 8, 98 Y. Morita
|
||||
- First skeleton version to demonstrate persistency capability
|
||||
in Geant4.
|
||||
|
||||
June 27, 98 G. Cosmo
|
||||
- Created.
|
||||
|
||||
@@ -0,0 +1,136 @@
|
||||
$Id: README,v 1.3 1998/11/12 11:15:42 morita Exp $
|
||||
-------------------------------------------------------------------
|
||||
|
||||
=========================================================
|
||||
Geant4 - an Object-Oriented Toolkit for Simulation in HEP
|
||||
=========================================================
|
||||
|
||||
Example E02
|
||||
-----------
|
||||
|
||||
This program demonstrates how user can use object database using
|
||||
HepODBMS interface. Please contact your local system manager for
|
||||
the avaiability of HepODBMS and Objectivity/DB.
|
||||
|
||||
To use HepODBMS and underlying Objectivity/DB package, user needs
|
||||
a deep knowledge of the object database and environmental set
|
||||
procedures, which is lacking in this release. The code is provided
|
||||
here to give just a brief idea of the persistency in using Geant4.
|
||||
|
||||
How to build:
|
||||
|
||||
- Setup:
|
||||
|
||||
In addition to Geant4 standard setup, HepODBMS, Objectivity/DB and
|
||||
federated database variables should be defined.
|
||||
|
||||
For CERN AFS users, an example setup script "g4odbms_setup.csh" is
|
||||
provided in this directory. Put a line such as
|
||||
|
||||
source ${G4INSTALL}/tests/exampleE02/g4odbms_setup.csh
|
||||
|
||||
in your .cshrc file, where ${G4INSTALL} is the actual location of
|
||||
the Geant4 package.
|
||||
|
||||
- Objectivity/DB boot file and lock server
|
||||
|
||||
Boot file contains a database schema information of some basic
|
||||
HepODBMS and Objectivity/DB classes. Each time you compile your
|
||||
own persistent-capable class, a schema is compiled into your
|
||||
local copy of boot file. User must compile the Geant4 persistent
|
||||
capable schema into your local copy of the boot file.
|
||||
Default location is $HOME/G4EXAMPLE. If you want to have it
|
||||
to other location, define the following variables in your .cshrc.
|
||||
|
||||
example:
|
||||
setenv G4EXAMPLE_BOOT_DIR ${HOME}/tmp/G4EXAMPLE
|
||||
setenv G4EXAMPLE_BOOT ${G4EXAMPLE_BOOT_DIR}/G4EXAMPLE
|
||||
|
||||
For each boot file, user must have unique federated database ID (FDID).
|
||||
This number can be obtained from your local manager of Objectivity
|
||||
lock server. Define G4EXAMPLE_FDID in your .cshrc.
|
||||
|
||||
example:
|
||||
setenv G4EXAMPLE_FDID 501
|
||||
|
||||
The system also have Objectivity/DB lock server running. For the
|
||||
CERN AFS users, see the notes below, for other systems, contact your
|
||||
local system manager for the lock server configuration.
|
||||
|
||||
Then type,
|
||||
|
||||
gmake cleandb
|
||||
|
||||
to create your own boot file.
|
||||
___________________________________________________________________________
|
||||
Note: On CERN AFS, user must run his/her own lock server process
|
||||
due to a technical limitation on AFS and Objectivity.
|
||||
|
||||
oocheckls -notitle `hostname` || \
|
||||
oolockserver -notitle -noauto `hostname`::${G4EXAMPLE_BOOT}
|
||||
|
||||
Then check the process with
|
||||
|
||||
ps -ef | grep ools
|
||||
....
|
||||
<user> 60156 1 0 06:36:40 pts/15 0:00 ools -OO_NO_AUTOREC
|
||||
....
|
||||
|
||||
When you finish running this example, don't forget to kill
|
||||
the lock server process by yourself.
|
||||
|
||||
ookillls
|
||||
or
|
||||
kill -9 <pid_of_ools>
|
||||
|
||||
User must have AFS ACL access enabled to HepODBMS and
|
||||
Objectivity/DB directories.
|
||||
___________________________________________________________________________
|
||||
|
||||
- libG4persistency.a
|
||||
|
||||
Persistency in Geant4 is provided as a separate sub category.
|
||||
Geant4 installer must explictly go to ${G4INSTALL}/source/persistency
|
||||
directory and type
|
||||
|
||||
cd ...where Geant4 is installed...
|
||||
cd source/persistency
|
||||
gmake cleandb
|
||||
gmake
|
||||
gmake global
|
||||
|
||||
to create libG4persistency.a. This process will also produce a base
|
||||
schema file in the directory $(G4INSTALL)/schema/.
|
||||
|
||||
- exampleE02 executable
|
||||
|
||||
exampleE02 executable can be made by simply typing "gmake" in this directory.
|
||||
|
||||
Current example of Geant4 persistency requires the executable to be
|
||||
run as the same directory as your local federated database.
|
||||
Use exampleE02run csh-script for simple test.
|
||||
|
||||
example:
|
||||
gmake cleandb # see above
|
||||
gmake # creates exampleE02 executable
|
||||
exampleE02run # run exampleE02
|
||||
|
||||
- Persistent output
|
||||
|
||||
When exampleE02 is run correctly, following database files will be created
|
||||
in your federated database directory.
|
||||
|
||||
Events.G4EXAMPLE.DB G4EXAMPLE.FDDB System.G4EXAMPLE.DB
|
||||
G4EXAMPLE Geometry.G4EXAMPLE.DB
|
||||
|
||||
To browse the contents, use "ootoolmgr".
|
||||
|
||||
cd ...your federated database directory...
|
||||
setenv DISPLAY <your_x_terminal>:0.0
|
||||
ootoolmgr -notitle G4EXAMPLE &
|
||||
|
||||
Make sure to terminate ootoolmgr when you finish browsing.
|
||||
Otherwise lockserver will remember the browsing as a transaction,
|
||||
and the further updates to the database will be blocked.
|
||||
|
||||
--
|
||||
@@ -0,0 +1,64 @@
|
||||
// This code implementation is the intellectual property of
|
||||
// the RD44 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: exampleE02.cc,v 1.3 1998/12/08 16:37:24 allison Exp $
|
||||
// GEANT4 tag $Name: geant4-00 $
|
||||
//
|
||||
//
|
||||
// --------------------------------------------------------------
|
||||
// GEANT4 - exampleE02
|
||||
//
|
||||
// For information related to this code contact:
|
||||
// CERN, IT Division, ASD Group
|
||||
// --------------------------------------------------------------
|
||||
// Comments
|
||||
//
|
||||
//
|
||||
// --------------------------------------------------------------
|
||||
|
||||
|
||||
#include "ExE02DetectorConstruction.hh"
|
||||
#include "ExE02PhysicsList.hh"
|
||||
#include "ExE02RunAction.hh"
|
||||
#include "ExE02PrimaryGeneratorAction.hh"
|
||||
#include "ExE02EventAction.hh"
|
||||
#include "ExE02StackingAction.hh"
|
||||
|
||||
#include "G4ios.hh"
|
||||
|
||||
#include "G4RunManager.hh"
|
||||
#include "G4PersistencyManager.hh"
|
||||
|
||||
int main()
|
||||
{
|
||||
// Persistency Manager
|
||||
G4PersistencyManager * persistencyManager =
|
||||
G4PersistencyManager::GetPersistencyManager();
|
||||
|
||||
// Run manager
|
||||
G4RunManager * runManager = new G4RunManager;
|
||||
|
||||
// Detector geometry
|
||||
runManager->SetUserInitialization(new ExE02DetectorConstruction);
|
||||
runManager->SetUserInitialization(new ExE02PhysicsList);
|
||||
|
||||
// UserAction classes.
|
||||
runManager->SetUserAction(new ExE02RunAction);
|
||||
runManager->SetUserAction(new ExE02PrimaryGeneratorAction);
|
||||
runManager->SetUserAction(new ExE02EventAction);
|
||||
runManager->SetUserAction(new ExE02StackingAction);
|
||||
|
||||
runManager->Initialize();
|
||||
|
||||
// Event loop
|
||||
G4int n_event = 10;
|
||||
runManager->BeamOn(n_event);
|
||||
|
||||
delete runManager;
|
||||
return 0;
|
||||
}
|
||||
|
||||
@@ -0,0 +1,18 @@
|
||||
#
|
||||
# Macro file of "skeleton.cc"
|
||||
# for tracking performance test
|
||||
#
|
||||
/control/verbose 2
|
||||
/run/verbose 2
|
||||
#
|
||||
# SimpleBox geometry made by Pb
|
||||
# Geantino 100 GeV to the direction (1.,0.,0.)
|
||||
# 10 events
|
||||
#
|
||||
/mydet/switchDetector SimpleBox
|
||||
/mydet/selectMaterial Pb
|
||||
/gun/particle geantino
|
||||
/gun/energy 100 GeV
|
||||
/gun/direction 1 0 0
|
||||
/run/initialize
|
||||
/run/beamOn 10
|
||||
@@ -0,0 +1,112 @@
|
||||
Unit category <Time> is not defined.
|
||||
Opening Federated Database G4EXAMPLE.
|
||||
-- Tracker type sensitive detector
|
||||
|
||||
****************************************************************
|
||||
****************************************************************
|
||||
** **
|
||||
** G4MuPairProduction : **
|
||||
** cross section/energy loss is calculated using **
|
||||
** the accurate cross section formula of R.Kokoulin, **
|
||||
** ( building the tables takes a lot of time, **
|
||||
** PLEASE BE PATIENT ! ) **
|
||||
** sampling of the energy of the pair is generated **
|
||||
** according to the sampling tables. **
|
||||
** **
|
||||
****************************************************************
|
||||
****************************************************************
|
||||
|
||||
****************************************************************
|
||||
****************************************************************
|
||||
** **
|
||||
** G4MuPairProduction : **
|
||||
** cross section/energy loss is calculated using **
|
||||
** the accurate cross section formula of R.Kokoulin, **
|
||||
** ( building the tables takes a lot of time, **
|
||||
** PLEASE BE PATIENT ! ) **
|
||||
** sampling of the energy of the pair is generated **
|
||||
** according to the sampling tables. **
|
||||
** **
|
||||
****************************************************************
|
||||
****************************************************************
|
||||
ExE02PhysicsList::setCuts:CutLength : 1 (mm)
|
||||
>>> Event 0
|
||||
Event : 0
|
||||
mySD/EvenCollection
|
||||
Number of hits 10
|
||||
Edep of the first hit 70.7118
|
||||
mySD/OddCollection
|
||||
Number of hits 48
|
||||
Edep of the first hit 44.5668
|
||||
>>> Event 1
|
||||
Event : 1
|
||||
mySD/EvenCollection
|
||||
Number of hits 36
|
||||
Edep of the first hit 22.3181
|
||||
mySD/OddCollection
|
||||
Number of hits 25
|
||||
Edep of the first hit 41.5939
|
||||
>>> Event 2
|
||||
Event : 2
|
||||
mySD/EvenCollection
|
||||
Number of hits 12
|
||||
Edep of the first hit 28.0978
|
||||
mySD/OddCollection
|
||||
Number of hits 52
|
||||
Edep of the first hit 3.52978
|
||||
>>> Event 3
|
||||
Event : 3
|
||||
mySD/EvenCollection
|
||||
Number of hits 14
|
||||
Edep of the first hit 5.96415
|
||||
mySD/OddCollection
|
||||
Number of hits 43
|
||||
Edep of the first hit 3.18537
|
||||
>>> Event 4
|
||||
Event : 4
|
||||
mySD/EvenCollection
|
||||
Number of hits 7
|
||||
Edep of the first hit 19.4871
|
||||
mySD/OddCollection
|
||||
Number of hits 57
|
||||
Edep of the first hit 7.21456
|
||||
>>> Event 5
|
||||
Event : 5
|
||||
mySD/EvenCollection
|
||||
Number of hits 6
|
||||
Edep of the first hit 1.65209
|
||||
mySD/OddCollection
|
||||
Number of hits 51
|
||||
Edep of the first hit 19.1148
|
||||
>>> Event 6
|
||||
Event : 6
|
||||
mySD/EvenCollection
|
||||
Number of hits 10
|
||||
Edep of the first hit 13.4296
|
||||
mySD/OddCollection
|
||||
Number of hits 47
|
||||
Edep of the first hit 62.0367
|
||||
>>> Event 7
|
||||
Event : 7
|
||||
mySD/EvenCollection
|
||||
Number of hits 6
|
||||
Edep of the first hit 36.4453
|
||||
mySD/OddCollection
|
||||
Number of hits 50
|
||||
Edep of the first hit 19.1307
|
||||
>>> Event 8
|
||||
Event : 8
|
||||
mySD/EvenCollection
|
||||
Number of hits 16
|
||||
Edep of the first hit 2.38804
|
||||
mySD/OddCollection
|
||||
Number of hits 52
|
||||
Edep of the first hit 48.9265
|
||||
>>> Event 9
|
||||
Event : 9
|
||||
mySD/EvenCollection
|
||||
Number of hits 12
|
||||
Edep of the first hit 19.3121
|
||||
mySD/OddCollection
|
||||
Number of hits 52
|
||||
Edep of the first hit 11.5742
|
||||
@@ -0,0 +1,42 @@
|
||||
#! /bin/csh -f
|
||||
|
||||
if ( ! $?G4EXAMPLE_FDID ) then
|
||||
echo "G4EXAMPLE_FDID is not defined. Stop."
|
||||
exit 2
|
||||
endif
|
||||
|
||||
# setup some variables
|
||||
|
||||
set CWD = `pwd`
|
||||
set G4SYSTEM = AIX-AFS
|
||||
set G4BIN = ${CWD}/../../../bin/${G4SYSTEM}
|
||||
set G4SCHEMA_DIR = ${CWD}/../../../schema
|
||||
|
||||
#### remove used database files
|
||||
###
|
||||
###set file = ${G4EXAMPLE_BOOT} ; if (-e $file) rm $file
|
||||
###set file = ${G4EXAMPLE_BOOT}.FDDB ; if (-e $file) rm $file
|
||||
###cd $G4EXAMPLE_BOOT_DIR
|
||||
###rm -f Events.*.DB Geometry.*.DB System.*.DB core
|
||||
###
|
||||
###echo "Creating a federated database $G4EXAMPLE_BOOT"
|
||||
###${HEP_ODBMS_DIR}/etc/getdb \
|
||||
###${G4SCHEMA_DIR}/G4SCHEMA $G4EXAMPLE_BOOT $G4EXAMPLE_FDID
|
||||
|
||||
# Since the name of the federated database file G4EXAMPLE is hard
|
||||
# coded into the executable for now, it is neccessary to run it in
|
||||
# the same directory as $G4EXAMPLE_BOOT.
|
||||
|
||||
echo "cd $G4EXAMPLE_BOOT_DIR" ; cd $G4EXAMPLE_BOOT_DIR
|
||||
|
||||
if ( $?BACKGROUND ) then
|
||||
if ( -e exampleE02.log.old ) rm -f exampleE02.log.old
|
||||
if ( -e exampleE02.log ) mv -f exampleE02.log exampleE02.log.old
|
||||
${G4BIN}/exampleE02 ${CWD}/exampleE02.in >& ${CWD}/exampleE02.log &
|
||||
echo "Job exampleE02 submitted..."
|
||||
sleep 2
|
||||
echo "tail -f exampleE02.log"
|
||||
tail -f ${CWD}/exampleE02.log
|
||||
else
|
||||
${G4BIN}/exampleE02 ${CWD}/exampleE02.in
|
||||
endif
|
||||
@@ -0,0 +1,22 @@
|
||||
#
|
||||
# G4ODBMS user example setup for CERN AFS
|
||||
#
|
||||
# Put a line in your .cshrc or .login to source this file.
|
||||
#
|
||||
# eg. source ...<path of this file>.../g4odbms_setup.csh
|
||||
#
|
||||
# Youhei Morita
|
||||
#
|
||||
|
||||
# ----- Objectivity variables setup
|
||||
|
||||
setenv OBJY_VERS 4.0.2
|
||||
|
||||
if ( -r /afs/cern.ch/rd45/objectivity/objyenv.csh ) then
|
||||
source /afs/cern.ch/rd45/objectivity/objyenv.csh
|
||||
endif
|
||||
|
||||
# ----- HepODBMS variables setup
|
||||
|
||||
setenv HEP_ODBMS_DIR /afs/cern.ch/sw/lhcxx/specific/ibm/HepODBMS/0.0
|
||||
setenv HEP_ODBMS_INCLUDES ${HEP_ODBMS_DIR}/include
|
||||
@@ -0,0 +1,20 @@
|
||||
|
||||
#ifndef ExE02DetectorConstruction_h
|
||||
#define ExE02DetectorConstruction_h 1
|
||||
|
||||
#include "G4VUserDetectorConstruction.hh"
|
||||
#include "globals.hh"
|
||||
|
||||
class ExE02DetectorConstruction : public G4VUserDetectorConstruction
|
||||
{
|
||||
public:
|
||||
ExE02DetectorConstruction();
|
||||
~ExE02DetectorConstruction();
|
||||
|
||||
public:
|
||||
G4VPhysicalVolume* Construct();
|
||||
|
||||
};
|
||||
|
||||
#endif
|
||||
|
||||
@@ -0,0 +1,25 @@
|
||||
|
||||
#ifndef ExE02EventAction_h
|
||||
#define ExE02EventAction_h 1
|
||||
|
||||
#include "G4UserEventAction.hh"
|
||||
#include "globals.hh"
|
||||
|
||||
class ExE02EventAction : public G4UserEventAction
|
||||
{
|
||||
public:
|
||||
ExE02EventAction();
|
||||
~ExE02EventAction();
|
||||
|
||||
public:
|
||||
void BeginOfEventAction();
|
||||
void EndOfEventAction();
|
||||
|
||||
private:
|
||||
G4int colID1;
|
||||
G4int colID2;
|
||||
};
|
||||
|
||||
#endif
|
||||
|
||||
|
||||
@@ -0,0 +1,51 @@
|
||||
// $Id: ExE02PhysicsList.hh,v 1.1 1998/10/14 15:25:44 allison Exp $
|
||||
// ------------------------------------------------------------
|
||||
// GEANT 4 class header file
|
||||
//
|
||||
// This class is a class derived from G4VUserPhysicsList
|
||||
// for constructing all particles and processes.
|
||||
//
|
||||
// History
|
||||
// first version 10 Jan. 1998 by H.Kurashige
|
||||
// ------------------------------------------------------------
|
||||
#ifndef ExE02PhysicsList_h
|
||||
#define ExE02PhysicsList_h 1
|
||||
|
||||
#include "G4VUserPhysicsList.hh"
|
||||
#include "globals.hh"
|
||||
|
||||
class ExE02PhysicsList: public G4VUserPhysicsList
|
||||
{
|
||||
public:
|
||||
ExE02PhysicsList();
|
||||
virtual ~ExE02PhysicsList();
|
||||
|
||||
protected:
|
||||
// Construct particle and physics
|
||||
virtual void ConstructParticle();
|
||||
virtual void ConstructProcess();
|
||||
|
||||
//
|
||||
virtual void SetCuts(G4double aCut);
|
||||
|
||||
protected:
|
||||
// these methods Construct particles
|
||||
virtual void ConstructBosons();
|
||||
virtual void ConstructLeptons();
|
||||
virtual void ConstructMesons();
|
||||
virtual void ConstructBarions();
|
||||
virtual void ConstructIons();
|
||||
|
||||
protected:
|
||||
// these methods Construct physics processes and register them
|
||||
virtual void ConstructGeneral();
|
||||
virtual void ConstructEM();
|
||||
virtual void ConstructHad();
|
||||
virtual void ConstructLeptHad();
|
||||
|
||||
};
|
||||
|
||||
#endif
|
||||
|
||||
|
||||
|
||||
@@ -0,0 +1,25 @@
|
||||
|
||||
#ifndef ExE02PrimaryGeneratorAction_h
|
||||
#define ExE02PrimaryGeneratorAction_h 1
|
||||
|
||||
#include "G4VUserPrimaryGeneratorAction.hh"
|
||||
|
||||
class G4ParticleGun;
|
||||
class G4Event;
|
||||
|
||||
class ExE02PrimaryGeneratorAction : public G4VUserPrimaryGeneratorAction
|
||||
{
|
||||
public:
|
||||
ExE02PrimaryGeneratorAction();
|
||||
~ExE02PrimaryGeneratorAction();
|
||||
|
||||
public:
|
||||
void GeneratePrimaries(G4Event* anEvent);
|
||||
|
||||
private:
|
||||
G4ParticleGun* particleGun;
|
||||
};
|
||||
|
||||
#endif
|
||||
|
||||
|
||||
@@ -0,0 +1,25 @@
|
||||
|
||||
#ifndef ExE02RunAction_h
|
||||
#define ExE02RunAction_h 1
|
||||
|
||||
#include "G4UserRunAction.hh"
|
||||
#include "globals.hh"
|
||||
|
||||
class G4Run;
|
||||
|
||||
class ExE02RunAction : public G4UserRunAction
|
||||
{
|
||||
public:
|
||||
ExE02RunAction();
|
||||
~ExE02RunAction();
|
||||
|
||||
public:
|
||||
void BeginOfRunAction(G4Run* aRun);
|
||||
void EndOfRunAction(G4Run* aRun);
|
||||
|
||||
private:
|
||||
G4int runIDcounter;
|
||||
};
|
||||
|
||||
#endif
|
||||
|
||||
@@ -0,0 +1,26 @@
|
||||
|
||||
#ifndef ExE02StackingAction_H
|
||||
#define ExE02StackingAction_H 1
|
||||
|
||||
#include "globals.hh"
|
||||
#include "G4UserStackingAction.hh"
|
||||
#include "G4ThreeVector.hh"
|
||||
#include <rw/tpordvec.h>
|
||||
|
||||
class G4Track;
|
||||
|
||||
class ExE02StackingAction : public G4UserStackingAction
|
||||
{
|
||||
public:
|
||||
ExE02StackingAction();
|
||||
~ExE02StackingAction();
|
||||
|
||||
public:
|
||||
G4ClassificationOfNewTrack ClassifyNewTrack(G4Track *const aTrack);
|
||||
void NewStage();
|
||||
void PrepareNewEvent();
|
||||
|
||||
};
|
||||
|
||||
#endif
|
||||
|
||||
@@ -0,0 +1,60 @@
|
||||
|
||||
#ifndef ExE02TrackerHit_h
|
||||
#define ExE02TrackerHit_h 1
|
||||
|
||||
#include "G4VHit.hh"
|
||||
#include "G4THitsCollection.hh"
|
||||
#include "G4Allocator.hh"
|
||||
#include "G4ThreeVector.hh"
|
||||
|
||||
class ExE02TrackerHit : public G4VHit
|
||||
{
|
||||
public:
|
||||
|
||||
ExE02TrackerHit();
|
||||
~ExE02TrackerHit();
|
||||
ExE02TrackerHit(const ExE02TrackerHit &right);
|
||||
const ExE02TrackerHit& operator=(const ExE02TrackerHit &right);
|
||||
int operator==(const ExE02TrackerHit &right) const;
|
||||
|
||||
inline void *operator new(size_t);
|
||||
inline void operator delete(void *aHit);
|
||||
|
||||
void Draw();
|
||||
void Print();
|
||||
|
||||
private:
|
||||
G4double edep;
|
||||
G4ThreeVector pos;
|
||||
|
||||
public:
|
||||
inline void SetEdep(G4double de)
|
||||
{ edep = de; };
|
||||
inline G4double GetEdep()
|
||||
{ return edep; };
|
||||
inline void SetPos(G4ThreeVector xyz)
|
||||
{ pos = xyz; };
|
||||
inline G4ThreeVector GetPos()
|
||||
{ return pos; };
|
||||
|
||||
};
|
||||
|
||||
typedef G4THitsCollection<ExE02TrackerHit> ExE02TrackerHitsCollection;
|
||||
|
||||
extern G4Allocator<ExE02TrackerHit> ExE02TrackerHitAllocator;
|
||||
|
||||
inline void* ExE02TrackerHit::operator new(size_t)
|
||||
{
|
||||
void *aHit;
|
||||
aHit = (void *) ExE02TrackerHitAllocator.MallocSingle();
|
||||
return aHit;
|
||||
}
|
||||
|
||||
inline void ExE02TrackerHit::operator delete(void *aHit)
|
||||
{
|
||||
ExE02TrackerHitAllocator.FreeSingle((ExE02TrackerHit*) aHit);
|
||||
}
|
||||
|
||||
#endif
|
||||
|
||||
|
||||
@@ -0,0 +1,30 @@
|
||||
|
||||
#ifndef ExE02TrackerSD_h
|
||||
#define ExE02TrackerSD_h 1
|
||||
|
||||
#include "G4VSensitiveDetector.hh"
|
||||
#include "ExE02TrackerHit.hh"
|
||||
#include "G4Step.hh"
|
||||
|
||||
class ExE02TrackerSD : public G4VSensitiveDetector
|
||||
{
|
||||
|
||||
public:
|
||||
ExE02TrackerSD(G4String name);
|
||||
~ExE02TrackerSD();
|
||||
|
||||
void Initialize(G4HCofThisEvent*HCE);
|
||||
G4bool ProcessHits(G4Step*aStep,G4TouchableHistory*ROhist);
|
||||
void EndOfEvent(G4HCofThisEvent*HCE);
|
||||
void clear();
|
||||
void DrawAll();
|
||||
void PrintAll();
|
||||
|
||||
private:
|
||||
ExE02TrackerHitsCollection *EvenCollection;
|
||||
ExE02TrackerHitsCollection *OddCollection;
|
||||
};
|
||||
|
||||
|
||||
#endif
|
||||
|
||||
@@ -0,0 +1,118 @@
|
||||
|
||||
#include "ExE02DetectorConstruction.hh"
|
||||
|
||||
#include "ExE02TrackerSD.hh"
|
||||
|
||||
#include "G4Material.hh"
|
||||
#include "G4MaterialTable.hh"
|
||||
#include "G4Element.hh"
|
||||
#include "G4ElementTable.hh"
|
||||
#include "G4Box.hh"
|
||||
#include "G4Tubs.hh"
|
||||
#include "G4LogicalVolume.hh"
|
||||
#include "G4ThreeVector.hh"
|
||||
#include "G4PVPlacement.hh"
|
||||
#include "G4SDManager.hh"
|
||||
|
||||
ExE02DetectorConstruction::ExE02DetectorConstruction()
|
||||
{;}
|
||||
|
||||
ExE02DetectorConstruction::~ExE02DetectorConstruction()
|
||||
{;}
|
||||
|
||||
G4VPhysicalVolume* ExE02DetectorConstruction::Construct()
|
||||
{
|
||||
G4cout << " -- Tracker type sensitive detector" << endl;
|
||||
|
||||
//--------- Material definition ---------
|
||||
|
||||
G4double a, iz, z, density;
|
||||
G4String name, symbol;
|
||||
G4int nel;
|
||||
|
||||
a = 14.01*g/mole;
|
||||
G4Element* elN = new G4Element(name="Nitrogen", symbol="N", iz=7., a);
|
||||
a = 16.00*g/mole;
|
||||
G4Element* elO = new G4Element(name="Oxigen", symbol="O", iz=8., a);
|
||||
|
||||
a = 26.98*g/mole;
|
||||
density = 2.7*g/cm3;
|
||||
G4Material* Al = new G4Material(name="Aluminium", z=13., a, density);
|
||||
a = 207.19*g/mole;
|
||||
density = 11.35*g/cm3;
|
||||
G4Material* Pb = new G4Material(name="Lead", z=82., a, density);
|
||||
density = 1.29e-03*g/cm3;
|
||||
G4Material* Air = new G4Material(name="Air", density, nel=2);
|
||||
Air->AddElement(elN, .7);
|
||||
Air->AddElement(elO, .3);
|
||||
|
||||
//--------- G4VSolid, G4LogicalVolume, G4VPhysicalVolume ---------
|
||||
|
||||
G4double offset=22.5*cm, xTlate, yTlate;
|
||||
G4int i,j,copyNo;
|
||||
|
||||
G4Box *myWorldBox= new G4Box("WBox",10000*cm, 10000*cm, 10000*cm);
|
||||
G4Box *myCalBox = new G4Box("CBox",1500*cm, 1500*cm, 1000*cm);
|
||||
G4Tubs *myTargetTube
|
||||
= new G4Tubs("TTube",0*cm, 22.5*cm, 1000*cm, 0.*deg, 360.*deg);
|
||||
|
||||
G4LogicalVolume *myWorldLog=new G4LogicalVolume(myWorldBox,Air,
|
||||
"WLog", 0, 0, 0);
|
||||
G4LogicalVolume *myCalLog=new G4LogicalVolume(myCalBox,Al,
|
||||
"CLog", 0, 0, 0);
|
||||
G4LogicalVolume *myTargetLog=new G4LogicalVolume(myTargetTube,Pb,
|
||||
"TLog", 0, 0, 0);
|
||||
|
||||
G4PVPlacement *myWorldPhys=new G4PVPlacement(0,G4ThreeVector(),
|
||||
"WPhys",
|
||||
myWorldLog,
|
||||
0,false,0);
|
||||
G4PVPlacement *myCalPhys=new G4PVPlacement(0,G4ThreeVector(),
|
||||
"CalPhys",
|
||||
myCalLog,
|
||||
myWorldPhys,false,0);
|
||||
|
||||
G4String tName1("TPhys1");
|
||||
copyNo=1;
|
||||
for (j=1;j<=25;j++)
|
||||
{
|
||||
yTlate = -1000.0*cm - 40.0*cm + j*80.0*cm;
|
||||
for (i=1;i<=50;i++)
|
||||
{
|
||||
xTlate = -1000.0*cm - 20.0*cm + i*45.0*cm - offset;
|
||||
G4PVPlacement *myTargetPhys
|
||||
=new G4PVPlacement(0,G4ThreeVector(xTlate,yTlate,0*cm),
|
||||
tName1,myTargetLog,myCalPhys,false,copyNo++);
|
||||
}
|
||||
}
|
||||
G4String tName2("TPhys2");
|
||||
copyNo=1;
|
||||
for (j=1;j<=26;j++)
|
||||
{
|
||||
yTlate = -1000.0*cm - 80.0*cm + j*80.0*cm;
|
||||
for (i=1;i<=50;i++)
|
||||
{
|
||||
xTlate = -1000.0*cm - 20.0*cm + i*45.0*cm;
|
||||
G4PVPlacement *myTargetPhys
|
||||
=new G4PVPlacement(0,G4ThreeVector(xTlate,yTlate,0*cm),
|
||||
tName2,myTargetLog,myCalPhys,false,copyNo++);
|
||||
}
|
||||
}
|
||||
|
||||
//--------- Sensitive detector -------------------------------------
|
||||
|
||||
// A concrete object named "mySD", which corresponds to
|
||||
// the G4LogicalVolume object "myTargetLog"
|
||||
G4String sdName = "sample/tracker/mySD";
|
||||
ExE02TrackerSD* mySD = new ExE02TrackerSD( sdName );
|
||||
myTargetLog->SetSensitiveDetector( mySD );
|
||||
|
||||
// "mySD" will be registrated
|
||||
G4SDManager* SDman = G4SDManager::GetSDMpointer();
|
||||
SDman->AddNewDetector( mySD );
|
||||
|
||||
//------------------------------------------------------------------
|
||||
|
||||
return myWorldPhys;
|
||||
}
|
||||
|
||||
@@ -0,0 +1,55 @@
|
||||
|
||||
#include "ExE02EventAction.hh"
|
||||
|
||||
#include "ExE02TrackerHit.hh"
|
||||
|
||||
#include "G4Event.hh"
|
||||
#include "G4EventManager.hh"
|
||||
#include "G4HCofThisEvent.hh"
|
||||
#include "G4VHitsCollection.hh"
|
||||
#include "G4SDManager.hh"
|
||||
#include "G4ios.hh"
|
||||
|
||||
ExE02EventAction::ExE02EventAction()
|
||||
{
|
||||
colID1 = -1;
|
||||
colID2 = -1;
|
||||
}
|
||||
|
||||
ExE02EventAction::~ExE02EventAction()
|
||||
{;}
|
||||
|
||||
void ExE02EventAction::BeginOfEventAction()
|
||||
{
|
||||
if(colID1<0||colID2<0)
|
||||
{
|
||||
G4SDManager * SDman = G4SDManager::GetSDMpointer();
|
||||
G4String colNam;
|
||||
colID1 = SDman->GetCollectionID(colNam="EvenCollection");
|
||||
colID2 = SDman->GetCollectionID(colNam="OddCollection");
|
||||
}
|
||||
}
|
||||
|
||||
void ExE02EventAction::EndOfEventAction()
|
||||
{
|
||||
const G4Event* evt = fpEventManager->GetConstCurrentEvent();
|
||||
|
||||
G4cout << ">>> Event " << evt->GetEventID() << endl;
|
||||
|
||||
G4HCofThisEvent * HCE = evt->GetHCofThisEvent();
|
||||
ExE02TrackerHitsCollection * pTHC1
|
||||
= (ExE02TrackerHitsCollection*)(HCE->GetHC(colID1));
|
||||
ExE02TrackerHitsCollection * pTHC2
|
||||
= (ExE02TrackerHitsCollection*)(HCE->GetHC(colID2));
|
||||
|
||||
G4cout << "Event : " << evt->GetEventID() << endl;
|
||||
G4cout << pTHC1->GetSDname() << "/" << pTHC1->GetName() << endl;
|
||||
G4cout << "Number of hits " << pTHC1->entries() << endl;
|
||||
G4cout << " Edep of the first Hit " << (*pTHC1)[0]->GetEdep() << endl;
|
||||
G4cout << pTHC2->GetSDname() << "/" << pTHC2->GetName() << endl;
|
||||
G4cout << "Number of hits " << pTHC2->entries() << endl;
|
||||
G4cout << " Edep of the first Hit " << (*pTHC2)[0]->GetEdep() << endl;
|
||||
}
|
||||
|
||||
|
||||
|
||||
@@ -0,0 +1,274 @@
|
||||
// $Id: ExE02PhysicsList.cc,v 1.1 1998/10/14 15:26:10 allison Exp $
|
||||
// ------------------------------------------------------------
|
||||
// GEANT 4 class header file
|
||||
//
|
||||
// This is a version for maximum particle set
|
||||
// History
|
||||
// first version 10 Jan. 1998 by H.Kurashige
|
||||
// add decay at rest 26 Feb. 1998 by H.Kurashige
|
||||
// ------------------------------------------------------------
|
||||
|
||||
#include "globals.hh"
|
||||
#include "ExE02PhysicsList.hh"
|
||||
#include "G4ParticleDefinition.hh"
|
||||
#include "G4ParticleWithCuts.hh"
|
||||
#include "G4ProcessManager.hh"
|
||||
#include "G4ProcessVector.hh"
|
||||
#include "G4ParticleTypes.hh"
|
||||
#include "G4ParticleTable.hh"
|
||||
#include "G4Material.hh"
|
||||
#include "G4MaterialTable.hh"
|
||||
#include "G4ios.hh"
|
||||
#include <iomanip.h>
|
||||
|
||||
|
||||
ExE02PhysicsList::ExE02PhysicsList(): G4VUserPhysicsList()
|
||||
{
|
||||
SetVerboseLevel(1);
|
||||
}
|
||||
|
||||
ExE02PhysicsList::~ExE02PhysicsList()
|
||||
{
|
||||
}
|
||||
|
||||
void ExE02PhysicsList::ConstructParticle()
|
||||
{
|
||||
// In this method, static member functions should be called
|
||||
// for all particles which you want to use.
|
||||
// This ensures that objects of these particle types will be
|
||||
// created in the program.
|
||||
|
||||
ConstructBosons();
|
||||
ConstructLeptons();
|
||||
ConstructMesons();
|
||||
ConstructBarions();
|
||||
|
||||
}
|
||||
|
||||
void ExE02PhysicsList::ConstructBosons()
|
||||
{
|
||||
// pseudo-particles
|
||||
G4Geantino::GeantinoDefinition();
|
||||
G4ChargedGeantino::ChargedGeantinoDefinition();
|
||||
|
||||
// gamma
|
||||
G4Gamma::GammaDefinition();
|
||||
|
||||
// optical photon
|
||||
G4OpticalPhoton::OpticalPhotonDefinition();
|
||||
}
|
||||
|
||||
void ExE02PhysicsList::ConstructLeptons()
|
||||
{
|
||||
// leptons
|
||||
G4MuonPlus::MuonPlusDefinition();
|
||||
G4MuonMinus::MuonMinusDefinition();
|
||||
G4TauMinus::TauMinusDefinition();
|
||||
G4TauPlus::TauPlusDefinition();
|
||||
G4Electron::ElectronDefinition();
|
||||
G4Positron::PositronDefinition();
|
||||
G4NeutrinoTau::NeutrinoTauDefinition();
|
||||
G4AntiNeutrinoTau::AntiNeutrinoTauDefinition();
|
||||
G4NeutrinoMu::NeutrinoMuDefinition();
|
||||
G4AntiNeutrinoMu::AntiNeutrinoMuDefinition();
|
||||
G4NeutrinoE::NeutrinoEDefinition();
|
||||
G4AntiNeutrinoE::AntiNeutrinoEDefinition();
|
||||
}
|
||||
|
||||
void ExE02PhysicsList::ConstructMesons()
|
||||
{
|
||||
// mesons
|
||||
G4PionPlus::PionPlusDefinition();
|
||||
G4PionMinus::PionMinusDefinition();
|
||||
G4PionZero::PionZeroDefinition();
|
||||
G4Eta::EtaDefinition();
|
||||
G4KaonPlus::KaonPlusDefinition();
|
||||
G4KaonMinus::KaonMinusDefinition();
|
||||
G4KaonZero::KaonZeroDefinition();
|
||||
G4AntiKaonZero::AntiKaonZeroDefinition();
|
||||
G4KaonZeroLong::KaonZeroLongDefinition();
|
||||
G4KaonZeroShort::KaonZeroShortDefinition();
|
||||
|
||||
G4DMesonPlus::DMesonPlusDefinition();
|
||||
G4DMesonMinus::DMesonMinusDefinition();
|
||||
G4DMesonZero::DMesonZeroDefinition();
|
||||
G4AntiDMesonZero::AntiDMesonZeroDefinition();
|
||||
G4DsMesonPlus::DsMesonPlusDefinition();
|
||||
G4DsMesonMinus::DsMesonMinusDefinition();
|
||||
G4JPsi::JPsiDefinition();
|
||||
|
||||
G4BMesonPlus::BMesonPlusDefinition();
|
||||
G4BMesonMinus::BMesonMinusDefinition();
|
||||
G4BMesonZero::BMesonZeroDefinition();
|
||||
G4AntiBMesonZero::AntiBMesonZeroDefinition();
|
||||
G4BsMesonZero::BsMesonZeroDefinition();
|
||||
G4AntiBsMesonZero::AntiBsMesonZeroDefinition();
|
||||
}
|
||||
|
||||
void ExE02PhysicsList::ConstructBarions()
|
||||
{
|
||||
// barions
|
||||
G4Proton::ProtonDefinition();
|
||||
G4AntiProton::AntiProtonDefinition();
|
||||
G4Neutron::NeutronDefinition();
|
||||
G4AntiNeutron::AntiNeutronDefinition();
|
||||
G4Lambda::LambdaDefinition();
|
||||
G4AntiLambda::AntiLambdaDefinition();
|
||||
G4SigmaZero::SigmaZeroDefinition();
|
||||
G4AntiSigmaZero::AntiSigmaZeroDefinition();
|
||||
G4SigmaPlus::SigmaPlusDefinition();
|
||||
G4AntiSigmaPlus::AntiSigmaPlusDefinition();
|
||||
G4SigmaMinus::SigmaMinusDefinition();
|
||||
G4AntiSigmaMinus::AntiSigmaMinusDefinition();
|
||||
G4XiZero::XiZeroDefinition();
|
||||
G4AntiXiZero::AntiXiZeroDefinition();
|
||||
G4XiMinus::XiMinusDefinition();
|
||||
G4AntiXiMinus::AntiXiMinusDefinition();
|
||||
G4OmegaMinus::OmegaMinusDefinition();
|
||||
G4AntiOmegaMinus::AntiOmegaMinusDefinition();
|
||||
|
||||
G4LambdacPlus::LambdacPlusDefinition();
|
||||
G4SigmacPlusPlus::SigmacPlusPlusDefinition();
|
||||
G4SigmacPlus::SigmacPlusDefinition();
|
||||
G4SigmacZero::SigmacZeroDefinition();
|
||||
G4XicPlus::XicPlusDefinition();
|
||||
G4XicZero::XicZeroDefinition();
|
||||
G4OmegacZero::OmegacZeroDefinition();
|
||||
G4AntiLambdacPlus::AntiLambdacPlusDefinition();
|
||||
G4AntiSigmacPlusPlus::AntiSigmacPlusPlusDefinition();
|
||||
G4AntiSigmacPlus::AntiSigmacPlusDefinition();
|
||||
G4AntiSigmacZero::AntiSigmacZeroDefinition();
|
||||
G4AntiXicPlus::AntiXicPlusDefinition();
|
||||
G4AntiXicZero::AntiXicZeroDefinition();
|
||||
G4AntiOmegacZero::AntiOmegacZeroDefinition();
|
||||
}
|
||||
|
||||
void ExE02PhysicsList::ConstructIons()
|
||||
{
|
||||
// nuclei
|
||||
G4Alpha::AlphaDefinition();
|
||||
G4Deuteron::DeuteronDefinition();
|
||||
G4Triton::TritonDefinition();
|
||||
}
|
||||
|
||||
void ExE02PhysicsList::ConstructProcess()
|
||||
{
|
||||
AddTransportation();
|
||||
ConstructEM();
|
||||
ConstructLeptHad();
|
||||
ConstructHad();
|
||||
ConstructGeneral();
|
||||
}
|
||||
|
||||
#include "G4ComptonScattering.hh"
|
||||
#include "G4GammaConversion.hh"
|
||||
#include "G4PhotoElectricEffect.hh"
|
||||
|
||||
#include "G4MultipleScattering.hh"
|
||||
|
||||
#include "G4eIonisation.hh"
|
||||
#include "G4eBremsstrahlung.hh"
|
||||
#include "G4eplusAnnihilation.hh"
|
||||
|
||||
#include "G4MuIonisation.hh"
|
||||
#include "G4MuBremsstrahlung.hh"
|
||||
#include "G4MuPairProduction.hh"
|
||||
|
||||
#include "G4hIonisation.hh"
|
||||
void ExE02PhysicsList::ConstructEM()
|
||||
{
|
||||
theParticleIterator->reset();
|
||||
while( (*theParticleIterator)() ){
|
||||
G4ParticleDefinition* particle = theParticleIterator->value();
|
||||
G4ProcessManager* pmanager = particle->GetProcessManager();
|
||||
G4String particleName = particle->GetParticleName();
|
||||
|
||||
if (particleName == "gamma") {
|
||||
// gamma
|
||||
// Construct processes for gamma
|
||||
pmanager->AddDiscreteProcess(new G4GammaConversion());
|
||||
pmanager->AddDiscreteProcess(new G4ComptonScattering());
|
||||
pmanager->AddDiscreteProcess(new G4PhotoElectricEffect());
|
||||
|
||||
} else if (particleName == "e-") {
|
||||
//electron
|
||||
// Construct processes for electron
|
||||
pmanager->AddProcess(new G4MultipleScattering(),-1,1,1);
|
||||
pmanager->AddProcess(new G4eIonisation(),-1,2,2);
|
||||
pmanager->AddProcess(new G4eBremsstrahlung(),-1,-1,3);
|
||||
|
||||
} else if (particleName == "e+") {
|
||||
//positron
|
||||
// Construct processes for positron
|
||||
pmanager->AddProcess(new G4MultipleScattering(),-1,1,1);
|
||||
|
||||
pmanager->AddProcess(new G4eIonisation(),-1,2,2);
|
||||
pmanager->AddProcess(new G4eBremsstrahlung(),-1,-1,3);
|
||||
pmanager->AddProcess(new G4eplusAnnihilation(),0,-1,4);
|
||||
|
||||
} else if( particleName == "mu+" ||
|
||||
particleName == "mu-" ) {
|
||||
//muon
|
||||
// Construct processes for muon+
|
||||
pmanager->AddProcess(new G4MultipleScattering(),-1,1,1);
|
||||
pmanager->AddProcess(new G4MuIonisation(),-1,2,2);
|
||||
pmanager->AddProcess(new G4MuBremsstrahlung(),-1,-1,3);
|
||||
pmanager->AddProcess(new G4MuPairProduction(),-1,-1,4);
|
||||
|
||||
} else {
|
||||
if ((particle->GetPDGCharge() != 0.0) &&
|
||||
(particle->GetParticleName() != "chargedgeantino")) {
|
||||
// all others charged particles except geantino
|
||||
pmanager->AddProcess(new G4MultipleScattering(),-1,1,1);
|
||||
pmanager->AddProcess(new G4hIonisation(),-1,2,2);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
void ExE02PhysicsList::ConstructHad()
|
||||
{;}
|
||||
|
||||
void ExE02PhysicsList::ConstructLeptHad()
|
||||
{;}
|
||||
|
||||
#include "G4Decay.hh"
|
||||
void ExE02PhysicsList::ConstructGeneral()
|
||||
{
|
||||
G4Decay* theDecayProcess = new G4Decay();
|
||||
theParticleIterator->reset();
|
||||
while( (*theParticleIterator)() ){
|
||||
G4ParticleDefinition* particle = theParticleIterator->value();
|
||||
G4ProcessManager* pmanager = particle->GetProcessManager();
|
||||
if (theDecayProcess->IsApplicable(*particle)) {
|
||||
pmanager->AddProcess(theDecayProcess, INT_MAX, -1, INT_MAX);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
void ExE02PhysicsList::SetCuts(G4double cut)
|
||||
{
|
||||
if (verboseLevel >0){
|
||||
G4cout << "ExE02PhysicsList::SetCuts:";
|
||||
G4cout << "CutLength : " << cut/mm << " (mm)" << endl;
|
||||
}
|
||||
|
||||
// set cut values for gamma at first and for e- second and next for e+,
|
||||
// because some processes for e+/e- need cut values for gamma
|
||||
SetCutValue(cut, "gamma");
|
||||
SetCutValue(cut, "e-");
|
||||
SetCutValue(cut, "e+");
|
||||
|
||||
// set cut values for proton and anti_proton before all other hadrons
|
||||
// because some processes for hadrons need cut values for proton/anti_proton
|
||||
SetCutValue(cut, "proton");
|
||||
SetCutValue(cut, "anti_proton");
|
||||
|
||||
SetCutValueForOthers(cut);
|
||||
|
||||
if (verboseLevel>1) {
|
||||
DumpCutValuesTable();
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@@ -0,0 +1,38 @@
|
||||
|
||||
#include "ExE02PrimaryGeneratorAction.hh"
|
||||
|
||||
#include "G4Event.hh"
|
||||
#include "G4ParticleGun.hh"
|
||||
#include "G4ParticleTable.hh"
|
||||
#include "G4ParticleDefinition.hh"
|
||||
#include "globals.hh"
|
||||
|
||||
ExE02PrimaryGeneratorAction::ExE02PrimaryGeneratorAction()
|
||||
{
|
||||
G4int n_particle = 1;
|
||||
particleGun = new G4ParticleGun(n_particle);
|
||||
|
||||
// default particle
|
||||
|
||||
G4ParticleTable* particleTable = G4ParticleTable::GetParticleTable();
|
||||
G4String particleName;
|
||||
G4ParticleDefinition* particle
|
||||
= particleTable->FindParticle(particleName="mu-");
|
||||
particleGun->SetParticleDefinition(particle);
|
||||
particleGun->SetParticleMomentumDirection(G4ThreeVector(1.,1.,0.));
|
||||
particleGun->SetParticleEnergy(1.*GeV);
|
||||
particleGun->SetParticlePosition(G4ThreeVector(0.*cm,0.*cm,0.*cm));
|
||||
|
||||
}
|
||||
|
||||
ExE02PrimaryGeneratorAction::~ExE02PrimaryGeneratorAction()
|
||||
{
|
||||
delete particleGun;
|
||||
}
|
||||
|
||||
void ExE02PrimaryGeneratorAction::GeneratePrimaries(G4Event* anEvent)
|
||||
{
|
||||
particleGun->GeneratePrimaryVertex(anEvent);
|
||||
}
|
||||
|
||||
|
||||
@@ -0,0 +1,38 @@
|
||||
|
||||
#include "ExE02RunAction.hh"
|
||||
|
||||
#include "G4Run.hh"
|
||||
#include "G4VPersistencyManager.hh"
|
||||
#include "G4TransportationManager.hh"
|
||||
#include "G4VPhysicalVolume.hh"
|
||||
|
||||
ExE02RunAction::ExE02RunAction()
|
||||
{
|
||||
runIDcounter = 0;
|
||||
}
|
||||
|
||||
ExE02RunAction::~ExE02RunAction()
|
||||
{
|
||||
}
|
||||
|
||||
void ExE02RunAction::BeginOfRunAction(G4Run* aRun)
|
||||
{
|
||||
aRun->SetRunID(runIDcounter++);
|
||||
if(runIDcounter==1)
|
||||
{
|
||||
G4VPersistencyManager* persM
|
||||
= G4VPersistencyManager::GetPersistencyManager();
|
||||
if(persM)
|
||||
{
|
||||
G4VPhysicalVolume* theWorld
|
||||
= G4TransportationManager::GetTransportationManager()
|
||||
->GetNavigatorForTracking()->GetWorldVolume();
|
||||
persM->Store(theWorld);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
void ExE02RunAction::EndOfRunAction(G4Run* aRun)
|
||||
{
|
||||
}
|
||||
|
||||
@@ -0,0 +1,30 @@
|
||||
|
||||
#include "ExE02StackingAction.hh"
|
||||
#include "G4Track.hh"
|
||||
#include "G4TrackStatus.hh"
|
||||
#include "G4ParticleDefinition.hh"
|
||||
#include "G4ParticleTypes.hh"
|
||||
#include "G4ios.hh"
|
||||
|
||||
ExE02StackingAction::ExE02StackingAction()
|
||||
{;}
|
||||
|
||||
ExE02StackingAction::~ExE02StackingAction()
|
||||
{;}
|
||||
|
||||
G4ClassificationOfNewTrack
|
||||
ExE02StackingAction::ClassifyNewTrack(G4Track *const aTrack)
|
||||
{
|
||||
G4ClassificationOfNewTrack classification = fKill;
|
||||
if(aTrack->GetParentID()==0)
|
||||
{ classification = fUrgent; }
|
||||
return classification;
|
||||
}
|
||||
|
||||
void ExE02StackingAction::NewStage()
|
||||
{;}
|
||||
|
||||
void ExE02StackingAction::PrepareNewEvent()
|
||||
{;}
|
||||
|
||||
|
||||
@@ -0,0 +1,38 @@
|
||||
|
||||
#include "ExE02TrackerHit.hh"
|
||||
|
||||
G4Allocator<ExE02TrackerHit> ExE02TrackerHitAllocator;
|
||||
|
||||
ExE02TrackerHit::ExE02TrackerHit()
|
||||
{;}
|
||||
|
||||
ExE02TrackerHit::~ExE02TrackerHit()
|
||||
{;}
|
||||
|
||||
ExE02TrackerHit::ExE02TrackerHit(const ExE02TrackerHit &right)
|
||||
{
|
||||
edep = right.edep;
|
||||
pos = right.pos;
|
||||
}
|
||||
|
||||
const ExE02TrackerHit& ExE02TrackerHit::operator=(const ExE02TrackerHit &right)
|
||||
{
|
||||
edep = right.edep;
|
||||
pos = right.pos;
|
||||
return *this;
|
||||
}
|
||||
|
||||
int ExE02TrackerHit::operator==(const ExE02TrackerHit &right) const
|
||||
{
|
||||
return 0;
|
||||
}
|
||||
|
||||
void ExE02TrackerHit::Draw()
|
||||
{
|
||||
}
|
||||
|
||||
void ExE02TrackerHit::Print()
|
||||
{
|
||||
}
|
||||
|
||||
|
||||
@@ -0,0 +1,68 @@
|
||||
|
||||
#include "ExE02TrackerSD.hh"
|
||||
#include "ExE02TrackerHit.hh"
|
||||
#include "G4VPhysicalVolume.hh"
|
||||
#include "G4LogicalVolume.hh"
|
||||
#include "G4Track.hh"
|
||||
#include "G4ParticleDefinition.hh"
|
||||
#include "G4SDManager.hh"
|
||||
#include "G4ios.hh"
|
||||
|
||||
ExE02TrackerSD::ExE02TrackerSD(G4String name)
|
||||
:G4VSensitiveDetector(name)
|
||||
{
|
||||
G4String HCname;
|
||||
collectionName.insert(HCname="EvenCollection");
|
||||
collectionName.insert(HCname="OddCollection");
|
||||
}
|
||||
|
||||
ExE02TrackerSD::~ExE02TrackerSD(){;}
|
||||
|
||||
void ExE02TrackerSD::Initialize(G4HCofThisEvent*HCE)
|
||||
{
|
||||
EvenCollection = new
|
||||
ExE02TrackerHitsCollection(SensitiveDetectorName,collectionName[0]);
|
||||
OddCollection = new
|
||||
ExE02TrackerHitsCollection(SensitiveDetectorName,collectionName[1]);
|
||||
}
|
||||
|
||||
G4bool ExE02TrackerSD::ProcessHits(G4Step*aStep,G4TouchableHistory*ROhist)
|
||||
{
|
||||
const G4VPhysicalVolume* physVol
|
||||
= aStep->GetPreStepPoint()->GetPhysicalVolume();
|
||||
G4double edep = aStep->GetTotalEnergyDeposit();
|
||||
|
||||
ExE02TrackerHit* newHit = new ExE02TrackerHit();
|
||||
newHit->SetEdep( edep );
|
||||
newHit->SetPos( aStep->GetPreStepPoint()->GetPosition() );
|
||||
if( physVol->GetName() == "TPhys1" )
|
||||
{ EvenCollection->insert( newHit ); }
|
||||
else if( physVol->GetName() == "TPhys2" )
|
||||
{ OddCollection->insert( newHit ); }
|
||||
return true;
|
||||
}
|
||||
|
||||
void ExE02TrackerSD::EndOfEvent(G4HCofThisEvent*HCE)
|
||||
{
|
||||
static G4int IDe = -1;
|
||||
static G4int IDo = -1;
|
||||
if(IDe<0)
|
||||
{ IDe = G4SDManager::GetSDMpointer()->GetCollectionID(collectionName[0]); }
|
||||
if(IDo<0)
|
||||
{ IDo = G4SDManager::GetSDMpointer()->GetCollectionID(collectionName[1]); }
|
||||
HCE->AddHitsCollection( IDe, EvenCollection );
|
||||
HCE->AddHitsCollection( IDo, OddCollection );
|
||||
}
|
||||
|
||||
void ExE02TrackerSD::clear()
|
||||
{
|
||||
}
|
||||
|
||||
void ExE02TrackerSD::DrawAll()
|
||||
{
|
||||
}
|
||||
|
||||
void ExE02TrackerSD::PrintAll()
|
||||
{
|
||||
}
|
||||
|
||||
@@ -0,0 +1,17 @@
|
||||
# $Id: GNUmakefile,v 1.1 1998/10/14 15:54:47 allison Exp $
|
||||
# --------------------------------------------------------------
|
||||
# GNUmakefile for tests module. Gabriele Cosmo, 27/06/98.
|
||||
# --------------------------------------------------------------
|
||||
|
||||
name := exampleE03
|
||||
G4TARGET := $(name)
|
||||
G4EXLIB := true
|
||||
|
||||
ifndef G4INSTALL
|
||||
G4INSTALL = ../../..
|
||||
endif
|
||||
|
||||
.PHONY: all
|
||||
all: lib bin
|
||||
|
||||
include $(G4INSTALL)/config/binmake.gmk
|
||||
@@ -0,0 +1,32 @@
|
||||
$Id: History,v 1.1 1998/10/14 15:54:47 allison Exp $
|
||||
-------------------------------------------------------------------
|
||||
|
||||
=========================================================
|
||||
Geant4 - an Object-Oriented Toolkit for Simulation in HEP
|
||||
=========================================================
|
||||
|
||||
Novice Example 09 History file
|
||||
------------------------------
|
||||
This file should be used by the test developer to briefly
|
||||
summarize all major modifications introduced in the code and keep
|
||||
track of all tags.
|
||||
|
||||
----------------------------------------------------------
|
||||
* Reverse chronological order (last date on top), please *
|
||||
----------------------------------------------------------
|
||||
|
||||
14th October 1998 John Allison
|
||||
- Moved from N09.
|
||||
|
||||
21st August 1998 John Allison
|
||||
- Renamed files N09* to ExN09*.
|
||||
|
||||
9th August 1998 John Allison
|
||||
- Changed G4UIterminal to G4UIGAG.
|
||||
|
||||
7th August 1998 John Allison
|
||||
- Moved from test05.
|
||||
|
||||
June 27, 98 G. Cosmo
|
||||
- Created.
|
||||
|
||||
@@ -0,0 +1,19 @@
|
||||
$Id: README,v 1.1 1998/10/14 15:54:48 allison Exp $
|
||||
-------------------------------------------------------------------
|
||||
|
||||
=========================================================
|
||||
Geant4 - an Object-Oriented Toolkit for Simulation in HEP
|
||||
=========================================================
|
||||
|
||||
ExampleN09
|
||||
----------
|
||||
|
||||
Jari Sulkimo
|
||||
31/10/97
|
||||
|
||||
This is an example using particle tracking in STEP CAD-models
|
||||
from the CMS detector project. The model can be changed
|
||||
by substituting the model name in the Parameters.txt file's
|
||||
first line with the other model name in the file.
|
||||
|
||||
|
||||
@@ -0,0 +1,52 @@
|
||||
// $Id: exampleE03.cc,v 1.2 1998/12/08 16:37:25 allison Exp $
|
||||
#include "ExE03DetectorConstruction.hh"
|
||||
#include "ExE03RunAction.hh"
|
||||
#include "ExE03PrimaryGeneratorAction.hh"
|
||||
#include "ExE03PhysicsList.hh"
|
||||
#include "G4AssemblyCreator.hh"
|
||||
#include "G4RunManager.hh"
|
||||
#include "G4UImanager.hh"
|
||||
#include "G4UIterminal.hh"
|
||||
|
||||
int main(int argc,char** argv) {
|
||||
|
||||
|
||||
// Run manager
|
||||
G4RunManager * runManager = new G4RunManager;
|
||||
|
||||
// UserInitialization classes
|
||||
runManager->SetUserInitialization(new ExE03DetectorConstruction);
|
||||
runManager->SetUserInitialization(new ExE03PhysicsList);
|
||||
|
||||
// UserAction classes
|
||||
runManager->SetUserAction(new ExE03RunAction);
|
||||
runManager->SetUserAction(new ExE03PrimaryGeneratorAction);
|
||||
|
||||
// User interactions
|
||||
// Define (G)UI for interactive mode
|
||||
if(argc==1)
|
||||
{
|
||||
// G4UIterminal is a (dumb) terminal.
|
||||
G4UIsession * session = new G4UIterminal;
|
||||
session->SessionStart();
|
||||
delete session;
|
||||
}
|
||||
else
|
||||
// Batch mode
|
||||
{
|
||||
G4UImanager * UI = G4UImanager::GetUIpointer();
|
||||
G4String command = "/control/execute ";
|
||||
G4String fileName = argv[1];
|
||||
UI->ApplyCommand(command+fileName);
|
||||
}
|
||||
|
||||
delete runManager;
|
||||
return 0;
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
@@ -0,0 +1,2 @@
|
||||
G4Axis2PlacementsCreator default constructor calling G4GeometryTable::RegisterObject(this)
|
||||
G4Axis2PlacementsCreator default constructor calling G4GeometryTable::RegisterObject(this)
|
||||
@@ -0,0 +1,15 @@
|
||||
/control/verbose 0
|
||||
/tracking/verbose 0
|
||||
#
|
||||
# Initialize GEANT4
|
||||
#
|
||||
/run/initialize
|
||||
#
|
||||
# Run 100 events
|
||||
#
|
||||
/run/beamOn 1
|
||||
#
|
||||
# Termination
|
||||
#
|
||||
exit
|
||||
|
||||
File diff suppressed because it is too large
Load Diff
@@ -0,0 +1,42 @@
|
||||
|
||||
#ifndef ExE03DetectorConstruction_h
|
||||
#define ExE03DetectorConstruction_h 1
|
||||
#include "G4PVPlacement.hh"
|
||||
#include "G4LogicalVolume.hh"
|
||||
#include "G4Box.hh"
|
||||
#include "G4Tubs.hh"
|
||||
#include "G4Timer.hh"
|
||||
#include "G4Material.hh"
|
||||
#include "G4Element.hh"
|
||||
#include "G4VUserDetectorConstruction.hh"
|
||||
#include "G4Assembly.hh"
|
||||
#include "G4AssemblyCreator.hh"
|
||||
#include "globals.hh"
|
||||
|
||||
class ExE03DetectorConstruction : public G4VUserDetectorConstruction
|
||||
{
|
||||
public:
|
||||
ExE03DetectorConstruction();
|
||||
~ExE03DetectorConstruction();
|
||||
|
||||
public:
|
||||
G4VPhysicalVolume* Construct();
|
||||
|
||||
private:
|
||||
G4double expHall_x;
|
||||
G4double expHall_y;
|
||||
G4double expHall_z;
|
||||
|
||||
G4double calBox_x;
|
||||
G4double calBox_y;
|
||||
G4double calBox_z;
|
||||
G4double rotAngle;
|
||||
G4double calPos;
|
||||
|
||||
G4double trackerRadius;
|
||||
G4double trackerHight;
|
||||
G4double trackerPos;
|
||||
};
|
||||
|
||||
#endif
|
||||
|
||||
@@ -0,0 +1,43 @@
|
||||
// $Id: ExE03PhysicsList.hh,v 1.1 1998/10/14 15:55:45 allison Exp $
|
||||
// ------------------------------------------------------------
|
||||
#ifndef ExE03PhysicsList_h
|
||||
#define ExE03PhysicsList_h 1
|
||||
|
||||
#include "G4VUserPhysicsList.hh"
|
||||
#include "globals.hh"
|
||||
|
||||
class ExE03PhysicsList: public G4VUserPhysicsList
|
||||
{
|
||||
public:
|
||||
ExE03PhysicsList();
|
||||
virtual ~ExE03PhysicsList();
|
||||
|
||||
protected:
|
||||
// Construct particle and physics
|
||||
virtual void ConstructParticle();
|
||||
virtual void ConstructProcess();
|
||||
|
||||
//
|
||||
virtual void SetCuts(G4double aCut);
|
||||
|
||||
protected:
|
||||
// these methods Construct particles
|
||||
virtual void ConstructBosons();
|
||||
virtual void ConstructLeptons();
|
||||
virtual void ConstructMesons();
|
||||
virtual void ConstructBarions();
|
||||
virtual void ConstructIons();
|
||||
|
||||
protected:
|
||||
// these methods Construct physics processes and register them
|
||||
virtual void ConstructGeneral();
|
||||
virtual void ConstructEM();
|
||||
virtual void ConstructHad();
|
||||
virtual void ConstructLeptHad();
|
||||
|
||||
};
|
||||
|
||||
#endif
|
||||
|
||||
|
||||
|
||||
@@ -0,0 +1,25 @@
|
||||
|
||||
#ifndef ExE03PrimaryGeneratorAction_h
|
||||
#define ExE03PrimaryGeneratorAction_h 1
|
||||
|
||||
#include "G4VUserPrimaryGeneratorAction.hh"
|
||||
|
||||
class G4ParticleGun;
|
||||
class G4Event;
|
||||
|
||||
class ExE03PrimaryGeneratorAction : public G4VUserPrimaryGeneratorAction
|
||||
{
|
||||
public:
|
||||
ExE03PrimaryGeneratorAction();
|
||||
~ExE03PrimaryGeneratorAction();
|
||||
|
||||
public:
|
||||
void GeneratePrimaries(G4Event* anEvent);
|
||||
|
||||
private:
|
||||
G4ParticleGun* particleGun;
|
||||
};
|
||||
|
||||
#endif
|
||||
|
||||
|
||||
+34
@@ -0,0 +1,34 @@
|
||||
|
||||
#ifndef ExE03RunAction_h
|
||||
#define ExE03RunAction_h 1
|
||||
|
||||
#include "G4UserRunAction.hh"
|
||||
#include "G4Timer.hh"
|
||||
#include "globals.hh"
|
||||
|
||||
class G4Run;
|
||||
|
||||
class ExE03RunAction : public G4UserRunAction
|
||||
{
|
||||
public:
|
||||
ExE03RunAction();
|
||||
~ExE03RunAction();
|
||||
|
||||
public:
|
||||
void BeginOfRunAction(G4Run* aRun);
|
||||
void EndOfRunAction(G4Run* aRun);
|
||||
|
||||
private:
|
||||
G4Timer* timer;
|
||||
G4int runIDcounter;
|
||||
};
|
||||
|
||||
#endif
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
@@ -0,0 +1,112 @@
|
||||
|
||||
#include "ExE03DetectorConstruction.hh"
|
||||
|
||||
ExE03DetectorConstruction::ExE03DetectorConstruction()
|
||||
{
|
||||
expHall_x = 1111600.*cm;
|
||||
expHall_y = 1111600.*cm;
|
||||
expHall_z = 1111600.*cm;
|
||||
|
||||
calBox_x = 50.*cm;
|
||||
calBox_y = 50.*cm;
|
||||
calBox_z = 50.*cm;
|
||||
rotAngle = 30.*deg;
|
||||
calPos = 200.*cm;
|
||||
|
||||
trackerRadius = 50.*cm;
|
||||
trackerHight = 100.*cm;
|
||||
trackerPos = -200.*cm;
|
||||
}
|
||||
|
||||
ExE03DetectorConstruction::~ExE03DetectorConstruction()
|
||||
{;}
|
||||
|
||||
G4VPhysicalVolume* ExE03DetectorConstruction::Construct()
|
||||
{
|
||||
|
||||
//------------------------------------------------------ materials
|
||||
|
||||
G4double a, iz, z, density;
|
||||
G4String name, symbol;
|
||||
G4int nel;
|
||||
|
||||
a = 14.01*g/mole;
|
||||
G4Element* elN = new G4Element(name="Nitrogen", symbol="N", iz=7., a);
|
||||
a = 16.00*g/mole;
|
||||
G4Element* elO = new G4Element(name="Oxygen", symbol="O", iz=8., a);
|
||||
|
||||
density = 1.29e-03*g/cm3;
|
||||
G4Material* Air = new G4Material(name="Air", density, nel=2);
|
||||
Air->AddElement(elN, .7);
|
||||
Air->AddElement(elO, .3);
|
||||
|
||||
a = 207.19*g/mole;
|
||||
density = 11.35*g/cm3;
|
||||
G4Material* Lead = new G4Material(name="Lead", z=82., a, density);
|
||||
|
||||
a = 39.95*g/mole;
|
||||
density = 1.782e-03*g/cm3;
|
||||
G4Material* Ar = new G4Material(name="ArgonGas", z=18., a, density);
|
||||
|
||||
//------------------------------------------------------ volumes
|
||||
|
||||
//------------------------------ experimental hall
|
||||
|
||||
G4Box * experimentalHall_box
|
||||
= new G4Box("expHall_b",expHall_x,expHall_y,expHall_z);
|
||||
G4LogicalVolume * experimentalHall_log
|
||||
= new G4LogicalVolume(experimentalHall_box,Air,"expHall_L",0,0,0);
|
||||
G4VPhysicalVolume * experimentalHall_phys
|
||||
= new G4PVPlacement(0,G4ThreeVector(),"expHall_P",
|
||||
experimentalHall_log,0,false,0);
|
||||
|
||||
|
||||
// STEP assembly creation
|
||||
G4AssemblyCreator MyAC("stepfiles/G4rod_place_asm.stp");
|
||||
// G4AssemblyCreator MyAC("stepfiles/CMSTracker.Step");
|
||||
//G4AssemblyCreator MyAC("stepfiles/coil1.Step");
|
||||
MyAC.ReadStepFile();
|
||||
STEPentity* ent=0;
|
||||
MyAC.CreateG4Geometry(*ent);
|
||||
|
||||
void *tmp = MyAC.GetCreatedObject();
|
||||
G4Assembly* assembly = new G4Assembly();
|
||||
assembly->SetPlacedVector(*(G4PlacedVector*)tmp);
|
||||
|
||||
G4PlacedSolid* ps=0;
|
||||
G4int solids = assembly->GetNumberOfSolids();
|
||||
for(G4int c=0;c<solids;c++)
|
||||
{
|
||||
ps = assembly->GetPlacedSolid(c);
|
||||
G4LogicalVolume* lv = new G4LogicalVolume(ps->GetSolid(),
|
||||
Lead,
|
||||
"STEPlog");
|
||||
HepRotation* hr = ps->GetRotation();
|
||||
G4ThreeVector* tr = ps->GetTranslation();
|
||||
new G4PVPlacement(hr,
|
||||
*tr,
|
||||
ps->GetSolid()->GetName(),
|
||||
lv,
|
||||
experimentalHall_phys,
|
||||
false,
|
||||
c);
|
||||
}
|
||||
|
||||
return experimentalHall_phys;
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
@@ -0,0 +1,266 @@
|
||||
// $Id: ExE03PhysicsList.cc,v 1.1 1998/10/14 15:56:09 allison Exp $
|
||||
|
||||
#include "globals.hh"
|
||||
#include "ExE03PhysicsList.hh"
|
||||
#include "G4ParticleDefinition.hh"
|
||||
#include "G4ParticleWithCuts.hh"
|
||||
#include "G4ProcessManager.hh"
|
||||
#include "G4ProcessVector.hh"
|
||||
#include "G4ParticleTypes.hh"
|
||||
#include "G4ParticleTable.hh"
|
||||
#include "G4Material.hh"
|
||||
#include "G4MaterialTable.hh"
|
||||
#include "G4ios.hh"
|
||||
#include <iomanip.h>
|
||||
|
||||
|
||||
ExE03PhysicsList::ExE03PhysicsList(): G4VUserPhysicsList()
|
||||
{
|
||||
SetVerboseLevel(1);
|
||||
}
|
||||
|
||||
ExE03PhysicsList::~ExE03PhysicsList()
|
||||
{
|
||||
}
|
||||
|
||||
void ExE03PhysicsList::ConstructParticle()
|
||||
{
|
||||
// In this method, static member functions should be called
|
||||
// for all particles which you want to use.
|
||||
// This ensures that objects of these particle types will be
|
||||
// created in the program.
|
||||
|
||||
ConstructBosons();
|
||||
ConstructLeptons();
|
||||
ConstructMesons();
|
||||
ConstructBarions();
|
||||
|
||||
}
|
||||
|
||||
void ExE03PhysicsList::ConstructBosons()
|
||||
{
|
||||
// pseudo-particles
|
||||
G4Geantino::GeantinoDefinition();
|
||||
G4ChargedGeantino::ChargedGeantinoDefinition();
|
||||
|
||||
// gamma
|
||||
G4Gamma::GammaDefinition();
|
||||
|
||||
// optical photon
|
||||
G4OpticalPhoton::OpticalPhotonDefinition();
|
||||
}
|
||||
|
||||
void ExE03PhysicsList::ConstructLeptons()
|
||||
{
|
||||
// leptons
|
||||
G4MuonPlus::MuonPlusDefinition();
|
||||
G4MuonMinus::MuonMinusDefinition();
|
||||
G4TauMinus::TauMinusDefinition();
|
||||
G4TauPlus::TauPlusDefinition();
|
||||
G4Electron::ElectronDefinition();
|
||||
G4Positron::PositronDefinition();
|
||||
G4NeutrinoTau::NeutrinoTauDefinition();
|
||||
G4AntiNeutrinoTau::AntiNeutrinoTauDefinition();
|
||||
G4NeutrinoMu::NeutrinoMuDefinition();
|
||||
G4AntiNeutrinoMu::AntiNeutrinoMuDefinition();
|
||||
G4NeutrinoE::NeutrinoEDefinition();
|
||||
G4AntiNeutrinoE::AntiNeutrinoEDefinition();
|
||||
}
|
||||
|
||||
void ExE03PhysicsList::ConstructMesons()
|
||||
{
|
||||
// mesons
|
||||
G4PionPlus::PionPlusDefinition();
|
||||
G4PionMinus::PionMinusDefinition();
|
||||
G4PionZero::PionZeroDefinition();
|
||||
G4Eta::EtaDefinition();
|
||||
G4KaonPlus::KaonPlusDefinition();
|
||||
G4KaonMinus::KaonMinusDefinition();
|
||||
G4KaonZero::KaonZeroDefinition();
|
||||
G4AntiKaonZero::AntiKaonZeroDefinition();
|
||||
G4KaonZeroLong::KaonZeroLongDefinition();
|
||||
G4KaonZeroShort::KaonZeroShortDefinition();
|
||||
|
||||
G4DMesonPlus::DMesonPlusDefinition();
|
||||
G4DMesonMinus::DMesonMinusDefinition();
|
||||
G4DMesonZero::DMesonZeroDefinition();
|
||||
G4AntiDMesonZero::AntiDMesonZeroDefinition();
|
||||
G4DsMesonPlus::DsMesonPlusDefinition();
|
||||
G4DsMesonMinus::DsMesonMinusDefinition();
|
||||
G4JPsi::JPsiDefinition();
|
||||
|
||||
G4BMesonPlus::BMesonPlusDefinition();
|
||||
G4BMesonMinus::BMesonMinusDefinition();
|
||||
G4BMesonZero::BMesonZeroDefinition();
|
||||
G4AntiBMesonZero::AntiBMesonZeroDefinition();
|
||||
G4BsMesonZero::BsMesonZeroDefinition();
|
||||
G4AntiBsMesonZero::AntiBsMesonZeroDefinition();
|
||||
}
|
||||
|
||||
void ExE03PhysicsList::ConstructBarions()
|
||||
{
|
||||
// barions
|
||||
G4Proton::ProtonDefinition();
|
||||
G4AntiProton::AntiProtonDefinition();
|
||||
G4Neutron::NeutronDefinition();
|
||||
G4AntiNeutron::AntiNeutronDefinition();
|
||||
G4Lambda::LambdaDefinition();
|
||||
G4AntiLambda::AntiLambdaDefinition();
|
||||
G4SigmaZero::SigmaZeroDefinition();
|
||||
G4AntiSigmaZero::AntiSigmaZeroDefinition();
|
||||
G4SigmaPlus::SigmaPlusDefinition();
|
||||
G4AntiSigmaPlus::AntiSigmaPlusDefinition();
|
||||
G4SigmaMinus::SigmaMinusDefinition();
|
||||
G4AntiSigmaMinus::AntiSigmaMinusDefinition();
|
||||
G4XiZero::XiZeroDefinition();
|
||||
G4AntiXiZero::AntiXiZeroDefinition();
|
||||
G4XiMinus::XiMinusDefinition();
|
||||
G4AntiXiMinus::AntiXiMinusDefinition();
|
||||
G4OmegaMinus::OmegaMinusDefinition();
|
||||
G4AntiOmegaMinus::AntiOmegaMinusDefinition();
|
||||
|
||||
G4LambdacPlus::LambdacPlusDefinition();
|
||||
G4SigmacPlusPlus::SigmacPlusPlusDefinition();
|
||||
G4SigmacPlus::SigmacPlusDefinition();
|
||||
G4SigmacZero::SigmacZeroDefinition();
|
||||
G4XicPlus::XicPlusDefinition();
|
||||
G4XicZero::XicZeroDefinition();
|
||||
G4OmegacZero::OmegacZeroDefinition();
|
||||
G4AntiLambdacPlus::AntiLambdacPlusDefinition();
|
||||
G4AntiSigmacPlusPlus::AntiSigmacPlusPlusDefinition();
|
||||
G4AntiSigmacPlus::AntiSigmacPlusDefinition();
|
||||
G4AntiSigmacZero::AntiSigmacZeroDefinition();
|
||||
G4AntiXicPlus::AntiXicPlusDefinition();
|
||||
G4AntiXicZero::AntiXicZeroDefinition();
|
||||
G4AntiOmegacZero::AntiOmegacZeroDefinition();
|
||||
}
|
||||
|
||||
void ExE03PhysicsList::ConstructIons()
|
||||
{
|
||||
// nuclei
|
||||
G4Alpha::AlphaDefinition();
|
||||
G4Deuteron::DeuteronDefinition();
|
||||
G4Triton::TritonDefinition();
|
||||
}
|
||||
|
||||
void ExE03PhysicsList::ConstructProcess()
|
||||
{
|
||||
AddTransportation();
|
||||
ConstructEM();
|
||||
ConstructLeptHad();
|
||||
ConstructHad();
|
||||
ConstructGeneral();
|
||||
}
|
||||
|
||||
#include "G4ComptonScattering.hh"
|
||||
#include "G4GammaConversion.hh"
|
||||
#include "G4PhotoElectricEffect.hh"
|
||||
|
||||
#include "G4MultipleScattering.hh"
|
||||
|
||||
#include "G4eIonisation.hh"
|
||||
#include "G4eBremsstrahlung.hh"
|
||||
#include "G4eplusAnnihilation.hh"
|
||||
|
||||
#include "G4MuIonisation.hh"
|
||||
#include "G4MuBremsstrahlung.hh"
|
||||
#include "G4MuPairProduction.hh"
|
||||
|
||||
#include "G4hIonisation.hh"
|
||||
void ExE03PhysicsList::ConstructEM()
|
||||
{
|
||||
theParticleIterator->reset();
|
||||
while( (*theParticleIterator)() ){
|
||||
G4ParticleDefinition* particle = theParticleIterator->value();
|
||||
G4ProcessManager* pmanager = particle->GetProcessManager();
|
||||
G4String particleName = particle->GetParticleName();
|
||||
|
||||
if (particleName == "gamma") {
|
||||
// gamma
|
||||
// Construct processes for gamma
|
||||
pmanager->AddDiscreteProcess(new G4GammaConversion());
|
||||
pmanager->AddDiscreteProcess(new G4ComptonScattering());
|
||||
pmanager->AddDiscreteProcess(new G4PhotoElectricEffect());
|
||||
|
||||
} else if (particleName == "e-") {
|
||||
//electron
|
||||
// Construct processes for electron
|
||||
pmanager->AddProcess(new G4MultipleScattering(),-1,1,1);
|
||||
pmanager->AddProcess(new G4eIonisation(),-1,2,2);
|
||||
pmanager->AddProcess(new G4eBremsstrahlung(),-1,-1,3);
|
||||
|
||||
} else if (particleName == "e+") {
|
||||
//positron
|
||||
// Construct processes for positron
|
||||
pmanager->AddProcess(new G4MultipleScattering(),-1,1,1);
|
||||
|
||||
pmanager->AddProcess(new G4eIonisation(),-1,2,2);
|
||||
pmanager->AddProcess(new G4eBremsstrahlung(),-1,-1,3);
|
||||
pmanager->AddProcess(new G4eplusAnnihilation(),0,-1,4);
|
||||
|
||||
} else if( particleName == "mu+" ||
|
||||
particleName == "mu-" ) {
|
||||
//muon
|
||||
// Construct processes for muon+
|
||||
pmanager->AddProcess(new G4MultipleScattering(),-1,1,1);
|
||||
pmanager->AddProcess(new G4MuIonisation(),-1,2,2);
|
||||
pmanager->AddProcess(new G4MuBremsstrahlung(),-1,-1,3);
|
||||
pmanager->AddProcess(new G4MuPairProduction(),-1,-1,4);
|
||||
|
||||
} else {
|
||||
if ((particle->GetPDGCharge() != 0.0) &&
|
||||
(particle->GetParticleName() != "chargedgeantino")) {
|
||||
// all others charged particles except geantino
|
||||
pmanager->AddProcess(new G4MultipleScattering(),-1,1,1);
|
||||
pmanager->AddProcess(new G4hIonisation(),-1,2,2);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
void ExE03PhysicsList::ConstructHad()
|
||||
{;}
|
||||
|
||||
void ExE03PhysicsList::ConstructLeptHad()
|
||||
{;}
|
||||
|
||||
#include "G4Decay.hh"
|
||||
void ExE03PhysicsList::ConstructGeneral()
|
||||
{
|
||||
G4Decay* theDecayProcess = new G4Decay();
|
||||
theParticleIterator->reset();
|
||||
while( (*theParticleIterator)() ){
|
||||
G4ParticleDefinition* particle = theParticleIterator->value();
|
||||
G4ProcessManager* pmanager = particle->GetProcessManager();
|
||||
if (theDecayProcess->IsApplicable(*particle)) {
|
||||
pmanager->AddProcess(theDecayProcess, INT_MAX, -1, INT_MAX);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
void ExE03PhysicsList::SetCuts(G4double cut)
|
||||
{
|
||||
if (verboseLevel >0){
|
||||
G4cout << "ExE03PhysicsList::SetCuts:";
|
||||
G4cout << "CutLength : " << cut/mm << " (mm)" << endl;
|
||||
}
|
||||
|
||||
// set cut values for gamma at first and for e- second and next for e+,
|
||||
// because some processes for e+/e- need cut values for gamma
|
||||
SetCutValue(cut, "gamma");
|
||||
SetCutValue(cut, "e-");
|
||||
SetCutValue(cut, "e+");
|
||||
|
||||
// set cut values for proton and anti_proton before all other hadrons
|
||||
// because some processes for hadrons need cut values for proton/anti_proton
|
||||
SetCutValue(cut, "proton");
|
||||
SetCutValue(cut, "anti_proton");
|
||||
|
||||
SetCutValueForOthers(cut);
|
||||
|
||||
if (verboseLevel>1) {
|
||||
DumpCutValuesTable();
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@@ -0,0 +1,40 @@
|
||||
|
||||
#include "ExE03PrimaryGeneratorAction.hh"
|
||||
|
||||
#include "G4Event.hh"
|
||||
#include "G4ParticleGun.hh"
|
||||
#include "G4ParticleTable.hh"
|
||||
#include "G4ParticleDefinition.hh"
|
||||
#include "globals.hh"
|
||||
|
||||
ExE03PrimaryGeneratorAction::ExE03PrimaryGeneratorAction()
|
||||
{
|
||||
G4int n_particle = 1;
|
||||
particleGun = new G4ParticleGun(n_particle);
|
||||
}
|
||||
|
||||
ExE03PrimaryGeneratorAction::~ExE03PrimaryGeneratorAction()
|
||||
{
|
||||
delete particleGun;
|
||||
}
|
||||
|
||||
void ExE03PrimaryGeneratorAction::GeneratePrimaries(G4Event* anEvent)
|
||||
{
|
||||
G4ParticleTable* particleTable = G4ParticleTable::GetParticleTable();
|
||||
G4String particleName;
|
||||
G4ParticleDefinition* particle
|
||||
= particleTable->FindParticle(particleName="e-");
|
||||
particleGun->SetParticleDefinition(particle);
|
||||
|
||||
particleGun->SetParticleMomentumDirection(G4ThreeVector(1.,0.,0.));
|
||||
particleGun->SetParticleEnergy(20.*MeV);
|
||||
particleGun->SetParticlePosition(G4ThreeVector(0,0,0));
|
||||
|
||||
particleGun->GeneratePrimaryVertex(anEvent);
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
Executable
+37
@@ -0,0 +1,37 @@
|
||||
|
||||
#include "ExE03RunAction.hh"
|
||||
|
||||
#include "G4Run.hh"
|
||||
#include "G4UImanager.hh"
|
||||
#include "G4ios.hh"
|
||||
|
||||
ExE03RunAction::ExE03RunAction()
|
||||
{
|
||||
timer = new G4Timer;
|
||||
runIDcounter = 0;
|
||||
}
|
||||
|
||||
ExE03RunAction::~ExE03RunAction()
|
||||
{
|
||||
delete timer;
|
||||
}
|
||||
|
||||
void ExE03RunAction::BeginOfRunAction(G4Run* aRun)
|
||||
{
|
||||
aRun->SetRunID(runIDcounter++);
|
||||
|
||||
G4UImanager* UI = G4UImanager::GetUIpointer();
|
||||
UI->ApplyCommand("/event/Verbose 1");
|
||||
UI->ApplyCommand("/tracking/Verbose 1");
|
||||
|
||||
G4cout << "### Run " << aRun->GetRunID() << " start." << endl;
|
||||
timer->Start();
|
||||
}
|
||||
|
||||
void ExE03RunAction::EndOfRunAction(G4Run* aRun)
|
||||
{
|
||||
timer->Stop();
|
||||
G4cout << "number of event = " << aRun->GetNumberOfEvent()
|
||||
<< " " << *timer << endl;
|
||||
}
|
||||
|
||||
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
@@ -0,0 +1,980 @@
|
||||
ISO-10303-21;
|
||||
HEADER;
|
||||
FILE_DESCRIPTION((''),'1');
|
||||
FILE_NAME('ROD_PLACE_ASM','1998-02-27T10:19:15',('oriunno'),(''),'PRO/ENGINEER BY PARAMETRIC TECHNOLOGY CORPORATION, 9718','PRO/ENGINEER BY PARAMETRIC TECHNOLOGY CORPORATION, 9718','');
|
||||
FILE_SCHEMA(('CONFIG_CONTROL_DESIGN'));
|
||||
ENDSEC;
|
||||
DATA;
|
||||
#1=DIRECTION('',(1.E0,0.E0,0.E0));
|
||||
#2=VECTOR('',#1,2.41E3);
|
||||
#3=CARTESIAN_POINT('',(-1.205E3,-7.E0,-7.8E1));
|
||||
#4=LINE('',#3,#2);
|
||||
#5=DIRECTION('',(0.E0,0.E0,-1.E0));
|
||||
#6=VECTOR('',#5,1.4E1);
|
||||
#7=CARTESIAN_POINT('',(-1.205E3,-7.E0,-6.4E1));
|
||||
#8=LINE('',#7,#6);
|
||||
#9=DIRECTION('',(0.E0,1.E0,0.E0));
|
||||
#10=VECTOR('',#9,1.6E1);
|
||||
#11=CARTESIAN_POINT('',(-1.205E3,-7.E0,-7.8E1));
|
||||
#12=LINE('',#11,#10);
|
||||
#13=DIRECTION('',(0.E0,0.E0,1.E0));
|
||||
#14=VECTOR('',#13,1.4E1);
|
||||
#15=CARTESIAN_POINT('',(-1.205E3,9.E0,-7.8E1));
|
||||
#16=LINE('',#15,#14);
|
||||
#17=DIRECTION('',(0.E0,-1.E0,0.E0));
|
||||
#18=VECTOR('',#17,1.5E0);
|
||||
#19=CARTESIAN_POINT('',(-1.205E3,9.E0,-6.4E1));
|
||||
#20=LINE('',#19,#18);
|
||||
#21=DIRECTION('',(0.E0,0.E0,1.E0));
|
||||
#22=VECTOR('',#21,1.25E1);
|
||||
#23=CARTESIAN_POINT('',(-1.205E3,7.5E0,-7.65E1));
|
||||
#24=LINE('',#23,#22);
|
||||
#25=DIRECTION('',(0.E0,1.E0,0.E0));
|
||||
#26=VECTOR('',#25,1.3E1);
|
||||
#27=CARTESIAN_POINT('',(-1.205E3,-5.5E0,-7.65E1));
|
||||
#28=LINE('',#27,#26);
|
||||
#29=DIRECTION('',(0.E0,0.E0,-1.E0));
|
||||
#30=VECTOR('',#29,1.25E1);
|
||||
#31=CARTESIAN_POINT('',(-1.205E3,-5.5E0,-6.4E1));
|
||||
#32=LINE('',#31,#30);
|
||||
#33=DIRECTION('',(0.E0,-1.E0,0.E0));
|
||||
#34=VECTOR('',#33,1.5E0);
|
||||
#35=CARTESIAN_POINT('',(-1.205E3,-5.5E0,-6.4E1));
|
||||
#36=LINE('',#35,#34);
|
||||
#37=DIRECTION('',(1.E0,0.E0,0.E0));
|
||||
#38=VECTOR('',#37,2.41E3);
|
||||
#39=CARTESIAN_POINT('',(-1.205E3,-7.E0,-6.4E1));
|
||||
#40=LINE('',#39,#38);
|
||||
#41=DIRECTION('',(1.E0,0.E0,0.E0));
|
||||
#42=VECTOR('',#41,2.41E3);
|
||||
#43=CARTESIAN_POINT('',(-1.205E3,9.E0,-6.4E1));
|
||||
#44=LINE('',#43,#42);
|
||||
#45=DIRECTION('',(1.E0,0.E0,0.E0));
|
||||
#46=VECTOR('',#45,2.41E3);
|
||||
#47=CARTESIAN_POINT('',(-1.205E3,7.5E0,-6.4E1));
|
||||
#48=LINE('',#47,#46);
|
||||
#49=DIRECTION('',(1.E0,0.E0,0.E0));
|
||||
#50=VECTOR('',#49,2.41E3);
|
||||
#51=CARTESIAN_POINT('',(-1.205E3,-5.5E0,-6.4E1));
|
||||
#52=LINE('',#51,#50);
|
||||
#53=DIRECTION('',(1.E0,0.E0,0.E0));
|
||||
#54=VECTOR('',#53,2.41E3);
|
||||
#55=CARTESIAN_POINT('',(-1.205E3,-5.5E0,-7.65E1));
|
||||
#56=LINE('',#55,#54);
|
||||
#57=DIRECTION('',(1.E0,0.E0,0.E0));
|
||||
#58=VECTOR('',#57,2.41E3);
|
||||
#59=CARTESIAN_POINT('',(-1.205E3,7.5E0,-7.65E1));
|
||||
#60=LINE('',#59,#58);
|
||||
#61=DIRECTION('',(0.E0,0.E0,1.E0));
|
||||
#62=VECTOR('',#61,1.4E1);
|
||||
#63=CARTESIAN_POINT('',(1.205E3,9.E0,-7.8E1));
|
||||
#64=LINE('',#63,#62);
|
||||
#65=DIRECTION('',(0.E0,1.E0,0.E0));
|
||||
#66=VECTOR('',#65,1.6E1);
|
||||
#67=CARTESIAN_POINT('',(1.205E3,-7.E0,-7.8E1));
|
||||
#68=LINE('',#67,#66);
|
||||
#69=DIRECTION('',(0.E0,0.E0,-1.E0));
|
||||
#70=VECTOR('',#69,1.4E1);
|
||||
#71=CARTESIAN_POINT('',(1.205E3,-7.E0,-6.4E1));
|
||||
#72=LINE('',#71,#70);
|
||||
#73=DIRECTION('',(0.E0,-1.E0,0.E0));
|
||||
#74=VECTOR('',#73,1.5E0);
|
||||
#75=CARTESIAN_POINT('',(1.205E3,-5.5E0,-6.4E1));
|
||||
#76=LINE('',#75,#74);
|
||||
#77=DIRECTION('',(0.E0,0.E0,-1.E0));
|
||||
#78=VECTOR('',#77,1.25E1);
|
||||
#79=CARTESIAN_POINT('',(1.205E3,-5.5E0,-6.4E1));
|
||||
#80=LINE('',#79,#78);
|
||||
#81=DIRECTION('',(0.E0,1.E0,0.E0));
|
||||
#82=VECTOR('',#81,1.3E1);
|
||||
#83=CARTESIAN_POINT('',(1.205E3,-5.5E0,-7.65E1));
|
||||
#84=LINE('',#83,#82);
|
||||
#85=DIRECTION('',(0.E0,0.E0,1.E0));
|
||||
#86=VECTOR('',#85,1.25E1);
|
||||
#87=CARTESIAN_POINT('',(1.205E3,7.5E0,-7.65E1));
|
||||
#88=LINE('',#87,#86);
|
||||
#89=DIRECTION('',(0.E0,-1.E0,0.E0));
|
||||
#90=VECTOR('',#89,1.5E0);
|
||||
#91=CARTESIAN_POINT('',(1.205E3,9.E0,-6.4E1));
|
||||
#92=LINE('',#91,#90);
|
||||
#93=DIRECTION('',(1.E0,0.E0,0.E0));
|
||||
#94=VECTOR('',#93,2.41E3);
|
||||
#95=CARTESIAN_POINT('',(-1.205E3,9.E0,-7.8E1));
|
||||
#96=LINE('',#95,#94);
|
||||
#97=CARTESIAN_POINT('',(-1.205E3,-7.E0,-7.8E1));
|
||||
#98=CARTESIAN_POINT('',(-1.205E3,9.E0,-7.8E1));
|
||||
#99=VERTEX_POINT('','',#97);
|
||||
#100=VERTEX_POINT('','',#98);
|
||||
#101=CARTESIAN_POINT('',(-1.205E3,9.E0,-6.4E1));
|
||||
#102=VERTEX_POINT('','',#101);
|
||||
#103=CARTESIAN_POINT('',(-1.205E3,-7.E0,-6.4E1));
|
||||
#104=VERTEX_POINT('','',#103);
|
||||
#105=CARTESIAN_POINT('',(1.205E3,-7.E0,-7.8E1));
|
||||
#106=CARTESIAN_POINT('',(1.205E3,9.E0,-7.8E1));
|
||||
#107=VERTEX_POINT('','',#105);
|
||||
#108=VERTEX_POINT('','',#106);
|
||||
#109=CARTESIAN_POINT('',(1.205E3,9.E0,-6.4E1));
|
||||
#110=VERTEX_POINT('','',#109);
|
||||
#111=CARTESIAN_POINT('',(1.205E3,-7.E0,-6.4E1));
|
||||
#112=VERTEX_POINT('','',#111);
|
||||
#113=CARTESIAN_POINT('',(-1.205E3,-5.5E0,-7.65E1));
|
||||
#114=CARTESIAN_POINT('',(-1.205E3,7.5E0,-7.65E1));
|
||||
#115=VERTEX_POINT('','',#113);
|
||||
#116=VERTEX_POINT('','',#114);
|
||||
#117=CARTESIAN_POINT('',(-1.205E3,7.5E0,-6.4E1));
|
||||
#118=VERTEX_POINT('','',#117);
|
||||
#119=CARTESIAN_POINT('',(-1.205E3,-5.5E0,-6.4E1));
|
||||
#120=VERTEX_POINT('','',#119);
|
||||
#121=CARTESIAN_POINT('',(1.205E3,-5.5E0,-7.65E1));
|
||||
#122=CARTESIAN_POINT('',(1.205E3,7.5E0,-7.65E1));
|
||||
#123=VERTEX_POINT('','',#121);
|
||||
#124=VERTEX_POINT('','',#122);
|
||||
#125=CARTESIAN_POINT('',(1.205E3,7.5E0,-6.4E1));
|
||||
#126=VERTEX_POINT('','',#125);
|
||||
#127=CARTESIAN_POINT('',(1.205E3,-5.5E0,-6.4E1));
|
||||
#128=VERTEX_POINT('','',#127);
|
||||
#129=CARTESIAN_POINT('',(-1.205E3,-7.E0,-7.8E1));
|
||||
#130=DIRECTION('',(0.E0,0.E0,-1.E0));
|
||||
#131=DIRECTION('',(0.E0,1.E0,0.E0));
|
||||
#132=AXIS2_PLACEMENT_3D('',#129,#130,#131);
|
||||
#133=PLANE('',#132);
|
||||
#135=ORIENTED_EDGE('',*,*,#134,.F.);
|
||||
#137=ORIENTED_EDGE('',*,*,#136,.T.);
|
||||
#139=ORIENTED_EDGE('',*,*,#138,.T.);
|
||||
#141=ORIENTED_EDGE('',*,*,#140,.F.);
|
||||
#142=EDGE_LOOP('','',(#135,#137,#139,#141));
|
||||
#143=FACE_OUTER_BOUND('',#142,.F.);
|
||||
#144=ADVANCED_FACE('',(#143),'' ,#133,.T.);
|
||||
|
||||
#145=CARTESIAN_POINT('',(-1.205E3,0.E0,0.E0));
|
||||
#146=DIRECTION('',(1.E0,0.E0,0.E0));
|
||||
#147=DIRECTION('',(0.E0,0.E0,1.E0));
|
||||
#148=AXIS2_PLACEMENT_3D('',#145,#146,#147);
|
||||
#149=PLANE('',#148);
|
||||
#151=ORIENTED_EDGE('',*,*,#150,.T.);
|
||||
#152=ORIENTED_EDGE('',*,*,#134,.T.);
|
||||
#154=ORIENTED_EDGE('',*,*,#153,.T.);
|
||||
#156=ORIENTED_EDGE('',*,*,#155,.T.);
|
||||
#158=ORIENTED_EDGE('',*,*,#157,.F.);
|
||||
#160=ORIENTED_EDGE('',*,*,#159,.F.);
|
||||
#162=ORIENTED_EDGE('',*,*,#161,.F.);
|
||||
#164=ORIENTED_EDGE('',*,*,#163,.T.);
|
||||
#165=EDGE_LOOP('','',(#151,#152,#154,#156,#158,#160,#162,#164));
|
||||
#166=FACE_OUTER_BOUND('',#165,.F.);
|
||||
#167=ADVANCED_FACE('',(#166),'' ,#149,.F.);
|
||||
|
||||
#168=CARTESIAN_POINT('',(-1.205E3,-7.E0,-6.4E1));
|
||||
#169=DIRECTION('',(0.E0,-1.E0,0.E0));
|
||||
#170=DIRECTION('',(0.E0,0.E0,-1.E0));
|
||||
#171=AXIS2_PLACEMENT_3D('',#168,#169,#170);
|
||||
#172=PLANE('',#171);
|
||||
#173=ORIENTED_EDGE('',*,*,#150,.F.);
|
||||
#175=ORIENTED_EDGE('',*,*,#174,.T.);
|
||||
#177=ORIENTED_EDGE('',*,*,#176,.T.);
|
||||
#178=ORIENTED_EDGE('',*,*,#136,.F.);
|
||||
#179=EDGE_LOOP('','',(#173,#175,#177,#178));
|
||||
#180=FACE_OUTER_BOUND('',#179,.F.);
|
||||
#181=ADVANCED_FACE('',(#180),'' ,#172,.T.);
|
||||
|
||||
#182=CARTESIAN_POINT('',(-1.205E3,9.E0,-6.4E1));
|
||||
#183=DIRECTION('',(0.E0,0.E0,1.E0));
|
||||
#184=DIRECTION('',(0.E0,-1.E0,0.E0));
|
||||
#185=AXIS2_PLACEMENT_3D('',#182,#183,#184);
|
||||
#186=PLANE('',#185);
|
||||
#188=ORIENTED_EDGE('',*,*,#187,.T.);
|
||||
#190=ORIENTED_EDGE('',*,*,#189,.T.);
|
||||
#191=ORIENTED_EDGE('',*,*,#174,.F.);
|
||||
#192=ORIENTED_EDGE('',*,*,#163,.F.);
|
||||
#193=EDGE_LOOP('','',(#188,#190,#191,#192));
|
||||
#194=FACE_OUTER_BOUND('',#193,.F.);
|
||||
#195=ADVANCED_FACE('',(#194),'' ,#186,.T.);
|
||||
|
||||
#196=CARTESIAN_POINT('',(-1.205E3,9.E0,-6.4E1));
|
||||
#197=DIRECTION('',(0.E0,0.E0,1.E0));
|
||||
#198=DIRECTION('',(0.E0,-1.E0,0.E0));
|
||||
#199=AXIS2_PLACEMENT_3D('',#196,#197,#198);
|
||||
#200=PLANE('',#199);
|
||||
#202=ORIENTED_EDGE('',*,*,#201,.T.);
|
||||
#204=ORIENTED_EDGE('',*,*,#203,.T.);
|
||||
#206=ORIENTED_EDGE('',*,*,#205,.F.);
|
||||
#207=ORIENTED_EDGE('',*,*,#155,.F.);
|
||||
#208=EDGE_LOOP('','',(#202,#204,#206,#207));
|
||||
#209=FACE_OUTER_BOUND('',#208,.F.);
|
||||
#210=ADVANCED_FACE('',(#209),'' ,#200,.T.);
|
||||
|
||||
#211=CARTESIAN_POINT('',(-1.205E3,-5.5E0,-6.4E1));
|
||||
#212=DIRECTION('',(0.E0,-1.E0,0.E0));
|
||||
#213=DIRECTION('',(0.E0,0.E0,-1.E0));
|
||||
#214=AXIS2_PLACEMENT_3D('',#211,#212,#213);
|
||||
#215=PLANE('',#214);
|
||||
#216=ORIENTED_EDGE('',*,*,#161,.T.);
|
||||
#218=ORIENTED_EDGE('',*,*,#217,.T.);
|
||||
#220=ORIENTED_EDGE('',*,*,#219,.F.);
|
||||
#221=ORIENTED_EDGE('',*,*,#187,.F.);
|
||||
#222=EDGE_LOOP('','',(#216,#218,#220,#221));
|
||||
#223=FACE_OUTER_BOUND('',#222,.F.);
|
||||
#224=ADVANCED_FACE('',(#223),'' ,#215,.F.);
|
||||
|
||||
#225=CARTESIAN_POINT('',(-1.205E3,-7.E0,-7.65E1));
|
||||
#226=DIRECTION('',(0.E0,0.E0,-1.E0));
|
||||
#227=DIRECTION('',(0.E0,1.E0,0.E0));
|
||||
#228=AXIS2_PLACEMENT_3D('',#225,#226,#227);
|
||||
#229=PLANE('',#228);
|
||||
#230=ORIENTED_EDGE('',*,*,#159,.T.);
|
||||
#232=ORIENTED_EDGE('',*,*,#231,.T.);
|
||||
#234=ORIENTED_EDGE('',*,*,#233,.F.);
|
||||
#235=ORIENTED_EDGE('',*,*,#217,.F.);
|
||||
#236=EDGE_LOOP('','',(#230,#232,#234,#235));
|
||||
#237=FACE_OUTER_BOUND('',#236,.F.);
|
||||
#238=ADVANCED_FACE('',(#237),'' ,#229,.F.);
|
||||
|
||||
#239=CARTESIAN_POINT('',(-1.205E3,7.5E0,-7.8E1));
|
||||
#240=DIRECTION('',(0.E0,1.E0,0.E0));
|
||||
#241=DIRECTION('',(0.E0,0.E0,1.E0));
|
||||
#242=AXIS2_PLACEMENT_3D('',#239,#240,#241);
|
||||
#243=PLANE('',#242);
|
||||
#244=ORIENTED_EDGE('',*,*,#157,.T.);
|
||||
#245=ORIENTED_EDGE('',*,*,#205,.T.);
|
||||
#247=ORIENTED_EDGE('',*,*,#246,.F.);
|
||||
#248=ORIENTED_EDGE('',*,*,#231,.F.);
|
||||
#249=EDGE_LOOP('','',(#244,#245,#247,#248));
|
||||
#250=FACE_OUTER_BOUND('',#249,.F.);
|
||||
#251=ADVANCED_FACE('',(#250),'' ,#243,.F.);
|
||||
|
||||
#252=CARTESIAN_POINT('',(1.205E3,0.E0,0.E0));
|
||||
#253=DIRECTION('',(1.E0,0.E0,0.E0));
|
||||
#254=DIRECTION('',(0.E0,0.E0,1.E0));
|
||||
#255=AXIS2_PLACEMENT_3D('',#252,#253,#254);
|
||||
#256=PLANE('',#255);
|
||||
#258=ORIENTED_EDGE('',*,*,#257,.F.);
|
||||
#259=ORIENTED_EDGE('',*,*,#138,.F.);
|
||||
#260=ORIENTED_EDGE('',*,*,#176,.F.);
|
||||
#261=ORIENTED_EDGE('',*,*,#189,.F.);
|
||||
#262=ORIENTED_EDGE('',*,*,#219,.T.);
|
||||
#263=ORIENTED_EDGE('',*,*,#233,.T.);
|
||||
#264=ORIENTED_EDGE('',*,*,#246,.T.);
|
||||
#265=ORIENTED_EDGE('',*,*,#203,.F.);
|
||||
#266=EDGE_LOOP('','',(#258,#259,#260,#261,#262,#263,#264,#265));
|
||||
#267=FACE_OUTER_BOUND('',#266,.F.);
|
||||
#268=ADVANCED_FACE('',(#267),'' ,#256,.T.);
|
||||
|
||||
#269=CARTESIAN_POINT('',(-1.205E3,9.E0,-7.8E1));
|
||||
#270=DIRECTION('',(0.E0,1.E0,0.E0));
|
||||
#271=DIRECTION('',(0.E0,0.E0,1.E0));
|
||||
#272=AXIS2_PLACEMENT_3D('',#269,#270,#271);
|
||||
#273=PLANE('',#272);
|
||||
#274=ORIENTED_EDGE('',*,*,#153,.F.);
|
||||
#275=ORIENTED_EDGE('',*,*,#140,.T.);
|
||||
#276=ORIENTED_EDGE('',*,*,#257,.T.);
|
||||
#277=ORIENTED_EDGE('',*,*,#201,.F.);
|
||||
#278=EDGE_LOOP('','',(#274,#275,#276,#277));
|
||||
#279=FACE_OUTER_BOUND('',#278,.F.);
|
||||
#280=ADVANCED_FACE('',(#279),'' ,#273,.T.);
|
||||
|
||||
#281=CLOSED_SHELL('',(#144,#167,#181,#195,#210,#224,#238,#251,#268,#280));
|
||||
#282=MANIFOLD_SOLID_BREP('',#281);
|
||||
#283=DIRECTION('',(1.E0,0.E0,0.E0));
|
||||
#284=VECTOR('',#283,2.41E3);
|
||||
#285=CARTESIAN_POINT('',(-1.205E3,9.E0,6.4E1));
|
||||
#286=LINE('',#285,#284);
|
||||
#287=DIRECTION('',(0.E0,0.E0,1.E0));
|
||||
#288=VECTOR('',#287,1.4E1);
|
||||
#289=CARTESIAN_POINT('',(-1.205E3,9.E0,6.4E1));
|
||||
#290=LINE('',#289,#288);
|
||||
#291=DIRECTION('',(0.E0,-1.E0,0.E0));
|
||||
#292=VECTOR('',#291,1.6E1);
|
||||
#293=CARTESIAN_POINT('',(-1.205E3,9.E0,7.8E1));
|
||||
#294=LINE('',#293,#292);
|
||||
#295=DIRECTION('',(0.E0,0.E0,-1.E0));
|
||||
#296=VECTOR('',#295,1.4E1);
|
||||
#297=CARTESIAN_POINT('',(-1.205E3,-7.E0,7.8E1));
|
||||
#298=LINE('',#297,#296);
|
||||
#299=DIRECTION('',(0.E0,1.E0,0.E0));
|
||||
#300=VECTOR('',#299,1.5E0);
|
||||
#301=CARTESIAN_POINT('',(-1.205E3,-7.E0,6.4E1));
|
||||
#302=LINE('',#301,#300);
|
||||
#303=DIRECTION('',(0.E0,0.E0,-1.E0));
|
||||
#304=VECTOR('',#303,1.25E1);
|
||||
#305=CARTESIAN_POINT('',(-1.205E3,-5.5E0,7.65E1));
|
||||
#306=LINE('',#305,#304);
|
||||
#307=DIRECTION('',(0.E0,-1.E0,0.E0));
|
||||
#308=VECTOR('',#307,1.3E1);
|
||||
#309=CARTESIAN_POINT('',(-1.205E3,7.5E0,7.65E1));
|
||||
#310=LINE('',#309,#308);
|
||||
#311=DIRECTION('',(0.E0,0.E0,1.E0));
|
||||
#312=VECTOR('',#311,1.25E1);
|
||||
#313=CARTESIAN_POINT('',(-1.205E3,7.5E0,6.4E1));
|
||||
#314=LINE('',#313,#312);
|
||||
#315=DIRECTION('',(0.E0,1.E0,0.E0));
|
||||
#316=VECTOR('',#315,1.5E0);
|
||||
#317=CARTESIAN_POINT('',(-1.205E3,7.5E0,6.4E1));
|
||||
#318=LINE('',#317,#316);
|
||||
#319=DIRECTION('',(1.E0,0.E0,0.E0));
|
||||
#320=VECTOR('',#319,2.41E3);
|
||||
#321=CARTESIAN_POINT('',(-1.205E3,9.E0,7.8E1));
|
||||
#322=LINE('',#321,#320);
|
||||
#323=DIRECTION('',(0.E0,0.E0,-1.E0));
|
||||
#324=VECTOR('',#323,1.4E1);
|
||||
#325=CARTESIAN_POINT('',(1.205E3,-7.E0,7.8E1));
|
||||
#326=LINE('',#325,#324);
|
||||
#327=DIRECTION('',(0.E0,-1.E0,0.E0));
|
||||
#328=VECTOR('',#327,1.6E1);
|
||||
#329=CARTESIAN_POINT('',(1.205E3,9.E0,7.8E1));
|
||||
#330=LINE('',#329,#328);
|
||||
#331=DIRECTION('',(0.E0,0.E0,1.E0));
|
||||
#332=VECTOR('',#331,1.4E1);
|
||||
#333=CARTESIAN_POINT('',(1.205E3,9.E0,6.4E1));
|
||||
#334=LINE('',#333,#332);
|
||||
#335=DIRECTION('',(0.E0,1.E0,0.E0));
|
||||
#336=VECTOR('',#335,1.5E0);
|
||||
#337=CARTESIAN_POINT('',(1.205E3,7.5E0,6.4E1));
|
||||
#338=LINE('',#337,#336);
|
||||
#339=DIRECTION('',(0.E0,0.E0,1.E0));
|
||||
#340=VECTOR('',#339,1.25E1);
|
||||
#341=CARTESIAN_POINT('',(1.205E3,7.5E0,6.4E1));
|
||||
#342=LINE('',#341,#340);
|
||||
#343=DIRECTION('',(0.E0,-1.E0,0.E0));
|
||||
#344=VECTOR('',#343,1.3E1);
|
||||
#345=CARTESIAN_POINT('',(1.205E3,7.5E0,7.65E1));
|
||||
#346=LINE('',#345,#344);
|
||||
#347=DIRECTION('',(0.E0,0.E0,-1.E0));
|
||||
#348=VECTOR('',#347,1.25E1);
|
||||
#349=CARTESIAN_POINT('',(1.205E3,-5.5E0,7.65E1));
|
||||
#350=LINE('',#349,#348);
|
||||
#351=DIRECTION('',(0.E0,1.E0,0.E0));
|
||||
#352=VECTOR('',#351,1.5E0);
|
||||
#353=CARTESIAN_POINT('',(1.205E3,-7.E0,6.4E1));
|
||||
#354=LINE('',#353,#352);
|
||||
#355=DIRECTION('',(1.E0,0.E0,0.E0));
|
||||
#356=VECTOR('',#355,2.41E3);
|
||||
#357=CARTESIAN_POINT('',(-1.205E3,-7.E0,7.8E1));
|
||||
#358=LINE('',#357,#356);
|
||||
#359=DIRECTION('',(1.E0,0.E0,0.E0));
|
||||
#360=VECTOR('',#359,2.41E3);
|
||||
#361=CARTESIAN_POINT('',(-1.205E3,-7.E0,6.4E1));
|
||||
#362=LINE('',#361,#360);
|
||||
#363=DIRECTION('',(1.E0,0.E0,0.E0));
|
||||
#364=VECTOR('',#363,2.41E3);
|
||||
#365=CARTESIAN_POINT('',(-1.205E3,-5.5E0,6.4E1));
|
||||
#366=LINE('',#365,#364);
|
||||
#367=DIRECTION('',(1.E0,0.E0,0.E0));
|
||||
#368=VECTOR('',#367,2.41E3);
|
||||
#369=CARTESIAN_POINT('',(-1.205E3,7.5E0,6.4E1));
|
||||
#370=LINE('',#369,#368);
|
||||
#371=DIRECTION('',(1.E0,0.E0,0.E0));
|
||||
#372=VECTOR('',#371,2.41E3);
|
||||
#373=CARTESIAN_POINT('',(-1.205E3,7.5E0,7.65E1));
|
||||
#374=LINE('',#373,#372);
|
||||
#375=DIRECTION('',(1.E0,0.E0,0.E0));
|
||||
#376=VECTOR('',#375,2.41E3);
|
||||
#377=CARTESIAN_POINT('',(-1.205E3,-5.5E0,7.65E1));
|
||||
#378=LINE('',#377,#376);
|
||||
#379=CARTESIAN_POINT('',(-1.205E3,9.E0,6.4E1));
|
||||
#380=CARTESIAN_POINT('',(-1.205E3,9.E0,7.8E1));
|
||||
#381=VERTEX_POINT('','',#379);
|
||||
#382=VERTEX_POINT('','',#380);
|
||||
#383=CARTESIAN_POINT('',(-1.205E3,-7.E0,7.8E1));
|
||||
#384=VERTEX_POINT('','',#383);
|
||||
#385=CARTESIAN_POINT('',(-1.205E3,-7.E0,6.4E1));
|
||||
#386=VERTEX_POINT('','',#385);
|
||||
#387=CARTESIAN_POINT('',(1.205E3,9.E0,6.4E1));
|
||||
#388=CARTESIAN_POINT('',(1.205E3,9.E0,7.8E1));
|
||||
#389=VERTEX_POINT('','',#387);
|
||||
#390=VERTEX_POINT('','',#388);
|
||||
#391=CARTESIAN_POINT('',(1.205E3,-7.E0,7.8E1));
|
||||
#392=VERTEX_POINT('','',#391);
|
||||
#393=CARTESIAN_POINT('',(1.205E3,-7.E0,6.4E1));
|
||||
#394=VERTEX_POINT('','',#393);
|
||||
#395=CARTESIAN_POINT('',(-1.205E3,7.5E0,6.4E1));
|
||||
#396=CARTESIAN_POINT('',(-1.205E3,7.5E0,7.65E1));
|
||||
#397=VERTEX_POINT('','',#395);
|
||||
#398=VERTEX_POINT('','',#396);
|
||||
#399=CARTESIAN_POINT('',(-1.205E3,-5.5E0,7.65E1));
|
||||
#400=VERTEX_POINT('','',#399);
|
||||
#401=CARTESIAN_POINT('',(-1.205E3,-5.5E0,6.4E1));
|
||||
#402=VERTEX_POINT('','',#401);
|
||||
#403=CARTESIAN_POINT('',(1.205E3,7.5E0,6.4E1));
|
||||
#404=CARTESIAN_POINT('',(1.205E3,7.5E0,7.65E1));
|
||||
#405=VERTEX_POINT('','',#403);
|
||||
#406=VERTEX_POINT('','',#404);
|
||||
#407=CARTESIAN_POINT('',(1.205E3,-5.5E0,7.65E1));
|
||||
#408=VERTEX_POINT('','',#407);
|
||||
#409=CARTESIAN_POINT('',(1.205E3,-5.5E0,6.4E1));
|
||||
#410=VERTEX_POINT('','',#409);
|
||||
#411=CARTESIAN_POINT('',(-1.205E3,9.E0,6.4E1));
|
||||
#412=DIRECTION('',(0.E0,1.E0,0.E0));
|
||||
#413=DIRECTION('',(0.E0,0.E0,1.E0));
|
||||
#414=AXIS2_PLACEMENT_3D('',#411,#412,#413);
|
||||
#415=PLANE('',#414);
|
||||
#417=ORIENTED_EDGE('',*,*,#416,.F.);
|
||||
#419=ORIENTED_EDGE('',*,*,#418,.T.);
|
||||
#421=ORIENTED_EDGE('',*,*,#420,.T.);
|
||||
#423=ORIENTED_EDGE('',*,*,#422,.F.);
|
||||
#424=EDGE_LOOP('','',(#417,#419,#421,#423));
|
||||
#425=FACE_OUTER_BOUND('',#424,.F.);
|
||||
#426=ADVANCED_FACE('',(#425),'' ,#415,.T.);
|
||||
|
||||
#427=CARTESIAN_POINT('',(-1.205E3,0.E0,0.E0));
|
||||
#428=DIRECTION('',(1.E0,0.E0,0.E0));
|
||||
#429=DIRECTION('',(0.E0,0.E0,1.E0));
|
||||
#430=AXIS2_PLACEMENT_3D('',#427,#428,#429);
|
||||
#431=PLANE('',#430);
|
||||
#432=ORIENTED_EDGE('',*,*,#416,.T.);
|
||||
#434=ORIENTED_EDGE('',*,*,#433,.T.);
|
||||
#436=ORIENTED_EDGE('',*,*,#435,.T.);
|
||||
#438=ORIENTED_EDGE('',*,*,#437,.T.);
|
||||
#440=ORIENTED_EDGE('',*,*,#439,.F.);
|
||||
#442=ORIENTED_EDGE('',*,*,#441,.F.);
|
||||
#444=ORIENTED_EDGE('',*,*,#443,.F.);
|
||||
#446=ORIENTED_EDGE('',*,*,#445,.T.);
|
||||
#447=EDGE_LOOP('','',(#432,#434,#436,#438,#440,#442,#444,#446));
|
||||
#448=FACE_OUTER_BOUND('',#447,.F.);
|
||||
#449=ADVANCED_FACE('',(#448),'' ,#431,.F.);
|
||||
|
||||
#450=CARTESIAN_POINT('',(-1.205E3,9.E0,7.8E1));
|
||||
#451=DIRECTION('',(0.E0,0.E0,1.E0));
|
||||
#452=DIRECTION('',(0.E0,-1.E0,0.E0));
|
||||
#453=AXIS2_PLACEMENT_3D('',#450,#451,#452);
|
||||
#454=PLANE('',#453);
|
||||
#455=ORIENTED_EDGE('',*,*,#433,.F.);
|
||||
#456=ORIENTED_EDGE('',*,*,#422,.T.);
|
||||
#458=ORIENTED_EDGE('',*,*,#457,.T.);
|
||||
#460=ORIENTED_EDGE('',*,*,#459,.F.);
|
||||
#461=EDGE_LOOP('','',(#455,#456,#458,#460));
|
||||
#462=FACE_OUTER_BOUND('',#461,.F.);
|
||||
#463=ADVANCED_FACE('',(#462),'' ,#454,.T.);
|
||||
|
||||
#464=CARTESIAN_POINT('',(1.205E3,0.E0,0.E0));
|
||||
#465=DIRECTION('',(1.E0,0.E0,0.E0));
|
||||
#466=DIRECTION('',(0.E0,0.E0,1.E0));
|
||||
#467=AXIS2_PLACEMENT_3D('',#464,#465,#466);
|
||||
#468=PLANE('',#467);
|
||||
#470=ORIENTED_EDGE('',*,*,#469,.F.);
|
||||
#471=ORIENTED_EDGE('',*,*,#457,.F.);
|
||||
#472=ORIENTED_EDGE('',*,*,#420,.F.);
|
||||
#474=ORIENTED_EDGE('',*,*,#473,.F.);
|
||||
#476=ORIENTED_EDGE('',*,*,#475,.T.);
|
||||
#478=ORIENTED_EDGE('',*,*,#477,.T.);
|
||||
#480=ORIENTED_EDGE('',*,*,#479,.T.);
|
||||
#482=ORIENTED_EDGE('',*,*,#481,.F.);
|
||||
#483=EDGE_LOOP('','',(#470,#471,#472,#474,#476,#478,#480,#482));
|
||||
#484=FACE_OUTER_BOUND('',#483,.F.);
|
||||
#485=ADVANCED_FACE('',(#484),'' ,#468,.T.);
|
||||
|
||||
#486=CARTESIAN_POINT('',(-1.205E3,-7.E0,7.8E1));
|
||||
#487=DIRECTION('',(0.E0,-1.E0,0.E0));
|
||||
#488=DIRECTION('',(0.E0,0.E0,-1.E0));
|
||||
#489=AXIS2_PLACEMENT_3D('',#486,#487,#488);
|
||||
#490=PLANE('',#489);
|
||||
#491=ORIENTED_EDGE('',*,*,#435,.F.);
|
||||
#492=ORIENTED_EDGE('',*,*,#459,.T.);
|
||||
#493=ORIENTED_EDGE('',*,*,#469,.T.);
|
||||
#495=ORIENTED_EDGE('',*,*,#494,.F.);
|
||||
#496=EDGE_LOOP('','',(#491,#492,#493,#495));
|
||||
#497=FACE_OUTER_BOUND('',#496,.F.);
|
||||
#498=ADVANCED_FACE('',(#497),'' ,#490,.T.);
|
||||
|
||||
#499=CARTESIAN_POINT('',(-1.205E3,-7.E0,6.4E1));
|
||||
#500=DIRECTION('',(0.E0,0.E0,-1.E0));
|
||||
#501=DIRECTION('',(0.E0,1.E0,0.E0));
|
||||
#502=AXIS2_PLACEMENT_3D('',#499,#500,#501);
|
||||
#503=PLANE('',#502);
|
||||
#505=ORIENTED_EDGE('',*,*,#504,.T.);
|
||||
#506=ORIENTED_EDGE('',*,*,#473,.T.);
|
||||
#507=ORIENTED_EDGE('',*,*,#418,.F.);
|
||||
#508=ORIENTED_EDGE('',*,*,#445,.F.);
|
||||
#509=EDGE_LOOP('','',(#505,#506,#507,#508));
|
||||
#510=FACE_OUTER_BOUND('',#509,.F.);
|
||||
#511=ADVANCED_FACE('',(#510),'' ,#503,.T.);
|
||||
|
||||
#512=CARTESIAN_POINT('',(-1.205E3,-7.E0,6.4E1));
|
||||
#513=DIRECTION('',(0.E0,0.E0,-1.E0));
|
||||
#514=DIRECTION('',(0.E0,1.E0,0.E0));
|
||||
#515=AXIS2_PLACEMENT_3D('',#512,#513,#514);
|
||||
#516=PLANE('',#515);
|
||||
#517=ORIENTED_EDGE('',*,*,#494,.T.);
|
||||
#518=ORIENTED_EDGE('',*,*,#481,.T.);
|
||||
#520=ORIENTED_EDGE('',*,*,#519,.F.);
|
||||
#521=ORIENTED_EDGE('',*,*,#437,.F.);
|
||||
#522=EDGE_LOOP('','',(#517,#518,#520,#521));
|
||||
#523=FACE_OUTER_BOUND('',#522,.F.);
|
||||
#524=ADVANCED_FACE('',(#523),'' ,#516,.T.);
|
||||
|
||||
#525=CARTESIAN_POINT('',(-1.205E3,7.5E0,6.4E1));
|
||||
#526=DIRECTION('',(0.E0,1.E0,0.E0));
|
||||
#527=DIRECTION('',(0.E0,0.E0,1.E0));
|
||||
#528=AXIS2_PLACEMENT_3D('',#525,#526,#527);
|
||||
#529=PLANE('',#528);
|
||||
#530=ORIENTED_EDGE('',*,*,#443,.T.);
|
||||
#532=ORIENTED_EDGE('',*,*,#531,.T.);
|
||||
#533=ORIENTED_EDGE('',*,*,#475,.F.);
|
||||
#534=ORIENTED_EDGE('',*,*,#504,.F.);
|
||||
#535=EDGE_LOOP('','',(#530,#532,#533,#534));
|
||||
#536=FACE_OUTER_BOUND('',#535,.F.);
|
||||
#537=ADVANCED_FACE('',(#536),'' ,#529,.F.);
|
||||
|
||||
#538=CARTESIAN_POINT('',(-1.205E3,9.E0,7.65E1));
|
||||
#539=DIRECTION('',(0.E0,0.E0,1.E0));
|
||||
#540=DIRECTION('',(0.E0,-1.E0,0.E0));
|
||||
#541=AXIS2_PLACEMENT_3D('',#538,#539,#540);
|
||||
#542=PLANE('',#541);
|
||||
#543=ORIENTED_EDGE('',*,*,#441,.T.);
|
||||
#545=ORIENTED_EDGE('',*,*,#544,.T.);
|
||||
#546=ORIENTED_EDGE('',*,*,#477,.F.);
|
||||
#547=ORIENTED_EDGE('',*,*,#531,.F.);
|
||||
#548=EDGE_LOOP('','',(#543,#545,#546,#547));
|
||||
#549=FACE_OUTER_BOUND('',#548,.F.);
|
||||
#550=ADVANCED_FACE('',(#549),'' ,#542,.F.);
|
||||
|
||||
#551=CARTESIAN_POINT('',(-1.205E3,-5.5E0,7.8E1));
|
||||
#552=DIRECTION('',(0.E0,-1.E0,0.E0));
|
||||
#553=DIRECTION('',(0.E0,0.E0,-1.E0));
|
||||
#554=AXIS2_PLACEMENT_3D('',#551,#552,#553);
|
||||
#555=PLANE('',#554);
|
||||
#556=ORIENTED_EDGE('',*,*,#439,.T.);
|
||||
#557=ORIENTED_EDGE('',*,*,#519,.T.);
|
||||
#558=ORIENTED_EDGE('',*,*,#479,.F.);
|
||||
#559=ORIENTED_EDGE('',*,*,#544,.F.);
|
||||
#560=EDGE_LOOP('','',(#556,#557,#558,#559));
|
||||
#561=FACE_OUTER_BOUND('',#560,.F.);
|
||||
#562=ADVANCED_FACE('',(#561),'' ,#555,.F.);
|
||||
|
||||
#563=CLOSED_SHELL('',(#426,#449,#463,#485,#498,#511,#524,#537,#550,#562));
|
||||
#564=MANIFOLD_SOLID_BREP('',#563);
|
||||
#565=(LENGTH_UNIT()NAMED_UNIT(*)SI_UNIT(.MILLI.,.METRE.));
|
||||
#566=DIMENSIONAL_EXPONENTS(0.E0,0.E0,0.E0,0.E0,0.E0,0.E0,0.E0);
|
||||
#567=(NAMED_UNIT(*)PLANE_ANGLE_UNIT()SI_UNIT($,.RADIAN.));
|
||||
#568=PLANE_ANGLE_MEASURE_WITH_UNIT(PLANE_ANGLE_MEASURE(1.745329251994E-2),#567);
|
||||
#569=(CONVERSION_BASED_UNIT('DEGREE',#568)NAMED_UNIT(#566)PLANE_ANGLE_UNIT());
|
||||
#570=(NAMED_UNIT(*)SI_UNIT($,.STERADIAN.)SOLID_ANGLE_UNIT());
|
||||
#571=UNCERTAINTY_MEASURE_WITH_UNIT(LENGTH_MEASURE(2.415000081568E-1),#565,'closure','Maximum model space distance between geometric entities at asserted connectivities');
|
||||
#572=(GEOMETRIC_REPRESENTATION_CONTEXT(3)GLOBAL_UNCERTAINTY_ASSIGNED_CONTEXT((#571))GLOBAL_UNIT_ASSIGNED_CONTEXT((#565,#569,#570))REPRESENTATION_CONTEXT('ID1','3'));
|
||||
#573=CARTESIAN_POINT('',(0.E0,0.E0,0.E0));
|
||||
#574=DIRECTION('',(0.E0,0.E0,1.E0));
|
||||
#575=DIRECTION('',(1.E0,0.E0,0.E0));
|
||||
#576=AXIS2_PLACEMENT_3D('',#573,#574,#575);
|
||||
#578=APPLICATION_CONTEXT('CONFIGURATION CONTROLLED 3D DESIGNS OF MECHANICAL PARTS AND ASSEMBLIES');
|
||||
#579=APPLICATION_PROTOCOL_DEFINITION('international standard','config_control_design',1994,#578);
|
||||
#580=DESIGN_CONTEXT('',#578,'design');
|
||||
#581=MECHANICAL_CONTEXT('',#578,'mechanical');
|
||||
#582=PRODUCT('ROD','ROD','NOT SPECIFIED',(#581));
|
||||
#583=PRODUCT_DEFINITION_FORMATION_WITH_SPECIFIED_SOURCE('6','LAST_VERSION',#582,
|
||||
.MADE.);
|
||||
#592=CARTESIAN_POINT('',(0.E0,0.E0,0.E0));
|
||||
#593=DIRECTION('',(0.E0,0.E0,1.E0));
|
||||
#594=DIRECTION('',(1.E0,0.E0,0.E0));
|
||||
#595=AXIS2_PLACEMENT_3D('',#592,#593,#594);
|
||||
#596=ITEM_DEFINED_TRANSFORMATION('','',#595,#576);
|
||||
#597=(REPRESENTATION_RELATIONSHIP('','',#589,#577)REPRESENTATION_RELATIONSHIP_WITH_TRANSFORMATION(#596)SHAPE_REPRESENTATION_RELATIONSHIP());
|
||||
#598=CONTEXT_DEPENDENT_SHAPE_REPRESENTATION(#597,#591);
|
||||
#599=DIRECTION('',(1.E0,0.E0,0.E0));
|
||||
#600=VECTOR('',#599,3.4E2);
|
||||
#601=CARTESIAN_POINT('',(-2.E2,-2.25E0,5.25E1));
|
||||
#602=LINE('',#601,#600);
|
||||
#603=DIRECTION('',(0.E0,0.E0,-1.E0));
|
||||
#604=VECTOR('',#603,1.05E2);
|
||||
#605=CARTESIAN_POINT('',(1.4E2,-2.25E0,5.25E1));
|
||||
#606=LINE('',#605,#604);
|
||||
#607=DIRECTION('',(-1.E0,0.E0,0.E0));
|
||||
#608=VECTOR('',#607,3.4E2);
|
||||
#609=CARTESIAN_POINT('',(1.4E2,-2.25E0,-5.25E1));
|
||||
#610=LINE('',#609,#608);
|
||||
#611=DIRECTION('',(0.E0,0.E0,1.E0));
|
||||
#612=VECTOR('',#611,1.05E2);
|
||||
#613=CARTESIAN_POINT('',(-2.E2,-2.25E0,-5.25E1));
|
||||
#614=LINE('',#613,#612);
|
||||
#615=DIRECTION('',(0.E0,1.E0,0.E0));
|
||||
#616=VECTOR('',#615,4.5E0);
|
||||
#617=CARTESIAN_POINT('',(-2.E2,-2.25E0,5.25E1));
|
||||
#618=LINE('',#617,#616);
|
||||
#619=DIRECTION('',(0.E0,1.E0,0.E0));
|
||||
#620=VECTOR('',#619,4.5E0);
|
||||
#621=CARTESIAN_POINT('',(-2.E2,-2.25E0,-5.25E1));
|
||||
#622=LINE('',#621,#620);
|
||||
#623=DIRECTION('',(0.E0,1.E0,0.E0));
|
||||
#624=VECTOR('',#623,4.5E0);
|
||||
#625=CARTESIAN_POINT('',(1.4E2,-2.25E0,-5.25E1));
|
||||
#626=LINE('',#625,#624);
|
||||
#627=DIRECTION('',(0.E0,1.E0,0.E0));
|
||||
#628=VECTOR('',#627,4.5E0);
|
||||
#629=CARTESIAN_POINT('',(1.4E2,-2.25E0,5.25E1));
|
||||
#630=LINE('',#629,#628);
|
||||
#631=DIRECTION('',(1.E0,0.E0,0.E0));
|
||||
#632=VECTOR('',#631,3.4E2);
|
||||
#633=CARTESIAN_POINT('',(-2.E2,2.25E0,5.25E1));
|
||||
#634=LINE('',#633,#632);
|
||||
#635=DIRECTION('',(0.E0,0.E0,1.E0));
|
||||
#636=VECTOR('',#635,1.05E2);
|
||||
#637=CARTESIAN_POINT('',(-2.E2,2.25E0,-5.25E1));
|
||||
#638=LINE('',#637,#636);
|
||||
#639=DIRECTION('',(-1.E0,0.E0,0.E0));
|
||||
#640=VECTOR('',#639,3.4E2);
|
||||
#641=CARTESIAN_POINT('',(1.4E2,2.25E0,-5.25E1));
|
||||
#642=LINE('',#641,#640);
|
||||
#643=DIRECTION('',(0.E0,0.E0,-1.E0));
|
||||
#644=VECTOR('',#643,1.05E2);
|
||||
#645=CARTESIAN_POINT('',(1.4E2,2.25E0,5.25E1));
|
||||
#646=LINE('',#645,#644);
|
||||
#647=CARTESIAN_POINT('',(-2.E2,-2.25E0,5.25E1));
|
||||
#648=CARTESIAN_POINT('',(1.4E2,-2.25E0,5.25E1));
|
||||
#649=VERTEX_POINT('','',#647);
|
||||
#650=VERTEX_POINT('','',#648);
|
||||
#651=CARTESIAN_POINT('',(1.4E2,-2.25E0,-5.25E1));
|
||||
#652=VERTEX_POINT('','',#651);
|
||||
#653=CARTESIAN_POINT('',(-2.E2,-2.25E0,-5.25E1));
|
||||
#654=VERTEX_POINT('','',#653);
|
||||
#655=CARTESIAN_POINT('',(-2.E2,2.25E0,5.25E1));
|
||||
#656=CARTESIAN_POINT('',(1.4E2,2.25E0,5.25E1));
|
||||
#657=VERTEX_POINT('','',#655);
|
||||
#658=VERTEX_POINT('','',#656);
|
||||
#659=CARTESIAN_POINT('',(1.4E2,2.25E0,-5.25E1));
|
||||
#660=VERTEX_POINT('','',#659);
|
||||
#661=CARTESIAN_POINT('',(-2.E2,2.25E0,-5.25E1));
|
||||
#662=VERTEX_POINT('','',#661);
|
||||
#663=CARTESIAN_POINT('',(0.E0,-2.25E0,0.E0));
|
||||
#664=DIRECTION('',(0.E0,1.E0,0.E0));
|
||||
#665=DIRECTION('',(0.E0,0.E0,-1.E0));
|
||||
#666=AXIS2_PLACEMENT_3D('',#663,#664,#665);
|
||||
#667=PLANE('',#666);
|
||||
#669=ORIENTED_EDGE('',*,*,#668,.T.);
|
||||
#671=ORIENTED_EDGE('',*,*,#670,.T.);
|
||||
#673=ORIENTED_EDGE('',*,*,#672,.T.);
|
||||
#675=ORIENTED_EDGE('',*,*,#674,.T.);
|
||||
#676=EDGE_LOOP('','',(#669,#671,#673,#675));
|
||||
#677=FACE_OUTER_BOUND('',#676,.F.);
|
||||
#678=ADVANCED_FACE('',(#677),'' ,#667,.F.);
|
||||
#679=CARTESIAN_POINT('',(-2.E2,-2.25E0,5.25E1));
|
||||
#680=DIRECTION('',(0.E0,0.E0,1.E0));
|
||||
#681=DIRECTION('',(1.E0,0.E0,0.E0));
|
||||
#682=AXIS2_PLACEMENT_3D('',#679,#680,#681);
|
||||
#683=PLANE('',#682);
|
||||
#684=ORIENTED_EDGE('',*,*,#668,.F.);
|
||||
#686=ORIENTED_EDGE('',*,*,#685,.T.);
|
||||
#688=ORIENTED_EDGE('',*,*,#687,.T.);
|
||||
#690=ORIENTED_EDGE('',*,*,#689,.F.);
|
||||
#691=EDGE_LOOP('','',(#684,#686,#688,#690));
|
||||
#692=FACE_OUTER_BOUND('',#691,.F.);
|
||||
#693=ADVANCED_FACE('',(#692),'' ,#683,.T.);
|
||||
|
||||
#694=CARTESIAN_POINT('',(-2.E2,-2.25E0,-5.25E1));
|
||||
#695=DIRECTION('',(-1.E0,0.E0,0.E0));
|
||||
#696=DIRECTION('',(0.E0,0.E0,1.E0));
|
||||
#697=AXIS2_PLACEMENT_3D('',#694,#695,#696);
|
||||
#698=PLANE('',#697);
|
||||
#699=ORIENTED_EDGE('',*,*,#674,.F.);
|
||||
#701=ORIENTED_EDGE('',*,*,#700,.T.);
|
||||
#703=ORIENTED_EDGE('',*,*,#702,.T.);
|
||||
#704=ORIENTED_EDGE('',*,*,#685,.F.);
|
||||
#705=EDGE_LOOP('','',(#699,#701,#703,#704));
|
||||
#706=FACE_OUTER_BOUND('',#705,.F.);
|
||||
#707=ADVANCED_FACE('',(#706),'' ,#698,.T.);
|
||||
|
||||
#708=CARTESIAN_POINT('',(1.4E2,-2.25E0,-5.25E1));
|
||||
#709=DIRECTION('',(0.E0,0.E0,-1.E0));
|
||||
#710=DIRECTION('',(-1.E0,0.E0,0.E0));
|
||||
#711=AXIS2_PLACEMENT_3D('',#708,#709,#710);
|
||||
#712=PLANE('',#711);
|
||||
#713=ORIENTED_EDGE('',*,*,#672,.F.);
|
||||
#715=ORIENTED_EDGE('',*,*,#714,.T.);
|
||||
#717=ORIENTED_EDGE('',*,*,#716,.T.);
|
||||
#718=ORIENTED_EDGE('',*,*,#700,.F.);
|
||||
#719=EDGE_LOOP('','',(#713,#715,#717,#718));
|
||||
#720=FACE_OUTER_BOUND('',#719,.F.);
|
||||
#721=ADVANCED_FACE('',(#720),'' ,#712,.T.);
|
||||
|
||||
#722=CARTESIAN_POINT('',(1.4E2,-2.25E0,5.25E1));
|
||||
#723=DIRECTION('',(1.E0,0.E0,0.E0));
|
||||
#724=DIRECTION('',(0.E0,0.E0,-1.E0));
|
||||
#725=AXIS2_PLACEMENT_3D('',#722,#723,#724);
|
||||
#726=PLANE('',#725);
|
||||
#727=ORIENTED_EDGE('',*,*,#670,.F.);
|
||||
#728=ORIENTED_EDGE('',*,*,#689,.T.);
|
||||
#730=ORIENTED_EDGE('',*,*,#729,.T.);
|
||||
#731=ORIENTED_EDGE('',*,*,#714,.F.);
|
||||
#732=EDGE_LOOP('','',(#727,#728,#730,#731));
|
||||
#733=FACE_OUTER_BOUND('',#732,.F.);
|
||||
#734=ADVANCED_FACE('',(#733),'' ,#726,.T.);
|
||||
|
||||
#735=CARTESIAN_POINT('',(0.E0,2.25E0,0.E0));
|
||||
#736=DIRECTION('',(0.E0,1.E0,0.E0));
|
||||
#737=DIRECTION('',(0.E0,0.E0,-1.E0));
|
||||
#738=AXIS2_PLACEMENT_3D('',#735,#736,#737);
|
||||
#739=PLANE('',#738);
|
||||
#740=ORIENTED_EDGE('',*,*,#687,.F.);
|
||||
#741=ORIENTED_EDGE('',*,*,#702,.F.);
|
||||
#742=ORIENTED_EDGE('',*,*,#716,.F.);
|
||||
#743=ORIENTED_EDGE('',*,*,#729,.F.);
|
||||
#744=EDGE_LOOP('','',(#740,#741,#742,#743));
|
||||
#745=FACE_OUTER_BOUND('',#744,.F.);
|
||||
#746=ADVANCED_FACE('',(#745),'' ,#739,.T.);
|
||||
|
||||
#747=CLOSED_SHELL('',(#678,#693,#707,#721,#734,#746));
|
||||
#748=MANIFOLD_SOLID_BREP('',#747);
|
||||
#749=(LENGTH_UNIT()NAMED_UNIT(*)SI_UNIT(.MILLI.,.METRE.));
|
||||
#750=DIMENSIONAL_EXPONENTS(0.E0,0.E0,0.E0,0.E0,0.E0,0.E0,0.E0);
|
||||
#751=(NAMED_UNIT(*)PLANE_ANGLE_UNIT()SI_UNIT($,.RADIAN.));
|
||||
#752=PLANE_ANGLE_MEASURE_WITH_UNIT(PLANE_ANGLE_MEASURE(1.745329251994E-2),#751);
|
||||
#753=(CONVERSION_BASED_UNIT('DEGREE',#752)NAMED_UNIT(#750)PLANE_ANGLE_UNIT());
|
||||
#754=(NAMED_UNIT(*)SI_UNIT($,.STERADIAN.)SOLID_ANGLE_UNIT());
|
||||
#755=UNCERTAINTY_MEASURE_WITH_UNIT(LENGTH_MEASURE(2.415000081568E-1),#749,'closure','Maximum model space distance between geometric entities at asserted connectivities');
|
||||
#756=(GEOMETRIC_REPRESENTATION_CONTEXT(3)GLOBAL_UNCERTAINTY_ASSIGNED_CONTEXT((#755))GLOBAL_UNIT_ASSIGNED_CONTEXT((#749,#753,#754))REPRESENTATION_CONTEXT('ID2','3'));
|
||||
#757=CARTESIAN_POINT('',(0.E0,0.E0,0.E0));
|
||||
#758=DIRECTION('',(0.E0,0.E0,1.E0));
|
||||
#759=DIRECTION('',(1.E0,0.E0,0.E0));
|
||||
#760=AXIS2_PLACEMENT_3D('',#757,#758,#759);
|
||||
#762=APPLICATION_CONTEXT('CONFIGURATION CONTROLLED 3D DESIGNS OF MECHANICAL PARTS AND ASSEMBLIES');
|
||||
#763=APPLICATION_PROTOCOL_DEFINITION('international standard','config_control_design',1994,#762);
|
||||
#764=DESIGN_CONTEXT('',#762,'design');
|
||||
#765=MECHANICAL_CONTEXT('',#762,'mechanical');
|
||||
#766=PRODUCT('MODULE','MODULE','NOT SPECIFIED',(#765));
|
||||
#767=PRODUCT_DEFINITION_FORMATION_WITH_SPECIFIED_SOURCE('5','LAST_VERSION',#766,.MADE.);
|
||||
#773=CARTESIAN_POINT('',(1.E3,0.E0,0.E0));
|
||||
#774=DIRECTION('',(0.E0,0.E0,1.E0));
|
||||
#775=DIRECTION('',(1.E0,0.E0,0.E0));
|
||||
#776=AXIS2_PLACEMENT_3D('',#773,#774,#775);
|
||||
#777=ITEM_DEFINED_TRANSFORMATION('','',#776,#760);
|
||||
#778=(REPRESENTATION_RELATIONSHIP('','',#589,#761)REPRESENTATION_RELATIONSHIP_WITH_TRANSFORMATION(#777)SHAPE_REPRESENTATION_RELATIONSHIP());
|
||||
#779=CONTEXT_DEPENDENT_SHAPE_REPRESENTATION(#778,#772);
|
||||
#782=CARTESIAN_POINT('',(6.E2,0.E0,0.E0));
|
||||
#783=DIRECTION('',(0.E0,0.E0,1.E0));
|
||||
#784=DIRECTION('',(1.E0,0.E0,0.E0));
|
||||
#785=AXIS2_PLACEMENT_3D('',#782,#783,#784);
|
||||
#786=ITEM_DEFINED_TRANSFORMATION('','',#785,#760);
|
||||
#787=(REPRESENTATION_RELATIONSHIP('','',#589,#761)REPRESENTATION_RELATIONSHIP_WITH_TRANSFORMATION(#786)SHAPE_REPRESENTATION_RELATIONSHIP());
|
||||
#788=CONTEXT_DEPENDENT_SHAPE_REPRESENTATION(#787,#781);
|
||||
#791=CARTESIAN_POINT('',(2.E2,0.E0,0.E0));
|
||||
#792=DIRECTION('',(0.E0,0.E0,1.E0));
|
||||
#793=DIRECTION('',(1.E0,0.E0,0.E0));
|
||||
#794=AXIS2_PLACEMENT_3D('',#791,#792,#793);
|
||||
#795=ITEM_DEFINED_TRANSFORMATION('','',#794,#760);
|
||||
#796=(REPRESENTATION_RELATIONSHIP('','',#589,#761)REPRESENTATION_RELATIONSHIP_WITH_TRANSFORMATION(#795)SHAPE_REPRESENTATION_RELATIONSHIP());
|
||||
#797=CONTEXT_DEPENDENT_SHAPE_REPRESENTATION(#796,#790);
|
||||
#800=CARTESIAN_POINT('',(-2.E2,0.E0,0.E0));
|
||||
#801=DIRECTION('',(0.E0,0.E0,1.E0));
|
||||
#802=DIRECTION('',(1.E0,0.E0,0.E0));
|
||||
#803=AXIS2_PLACEMENT_3D('',#800,#801,#802);
|
||||
#804=ITEM_DEFINED_TRANSFORMATION('','',#803,#760);
|
||||
#805=(REPRESENTATION_RELATIONSHIP('','',#589,#761)REPRESENTATION_RELATIONSHIP_WITH_TRANSFORMATION(#804)SHAPE_REPRESENTATION_RELATIONSHIP());
|
||||
#806=CONTEXT_DEPENDENT_SHAPE_REPRESENTATION(#805,#799);
|
||||
#809=CARTESIAN_POINT('',(-6.E2,0.E0,0.E0));
|
||||
#810=DIRECTION('',(0.E0,0.E0,1.E0));
|
||||
#811=DIRECTION('',(1.E0,0.E0,0.E0));
|
||||
#812=AXIS2_PLACEMENT_3D('',#809,#810,#811);
|
||||
#813=ITEM_DEFINED_TRANSFORMATION('','',#812,#760);
|
||||
#814=(REPRESENTATION_RELATIONSHIP('','',#589,#761)REPRESENTATION_RELATIONSHIP_WITH_TRANSFORMATION(#813)SHAPE_REPRESENTATION_RELATIONSHIP());
|
||||
#815=CONTEXT_DEPENDENT_SHAPE_REPRESENTATION(#814,#808);
|
||||
#818=CARTESIAN_POINT('',(-1.E3,0.E0,0.E0));
|
||||
#819=DIRECTION('',(0.E0,0.E0,1.E0));
|
||||
#820=DIRECTION('',(1.E0,0.E0,0.E0));
|
||||
#821=AXIS2_PLACEMENT_3D('',#818,#819,#820);
|
||||
#822=ITEM_DEFINED_TRANSFORMATION('','',#821,#760);
|
||||
#823=(REPRESENTATION_RELATIONSHIP('','',#589,#761)REPRESENTATION_RELATIONSHIP_WITH_TRANSFORMATION(#822)SHAPE_REPRESENTATION_RELATIONSHIP());
|
||||
#824=CONTEXT_DEPENDENT_SHAPE_REPRESENTATION(#823,#817);
|
||||
#825=(LENGTH_UNIT()NAMED_UNIT(*)SI_UNIT(.MILLI.,.METRE.));
|
||||
#826=DIMENSIONAL_EXPONENTS(0.E0,0.E0,0.E0,0.E0,0.E0,0.E0,0.E0);
|
||||
#827=(NAMED_UNIT(*)PLANE_ANGLE_UNIT()SI_UNIT($,.RADIAN.));
|
||||
#828=PLANE_ANGLE_MEASURE_WITH_UNIT(PLANE_ANGLE_MEASURE(1.745329251994E-2),#827);
|
||||
#829=(CONVERSION_BASED_UNIT('DEGREE',#828)NAMED_UNIT(#826)PLANE_ANGLE_UNIT());
|
||||
#830=(NAMED_UNIT(*)SI_UNIT($,.STERADIAN.)SOLID_ANGLE_UNIT());
|
||||
#831=UNCERTAINTY_MEASURE_WITH_UNIT(LENGTH_MEASURE(2.415000081568E-1),#825,'closure','Maximum model space distance between geometric entities at asserted connectivities');
|
||||
#832=(GEOMETRIC_REPRESENTATION_CONTEXT(3)GLOBAL_UNCERTAINTY_ASSIGNED_CONTEXT(
|
||||
(#831))GLOBAL_UNIT_ASSIGNED_CONTEXT((#825,#829,#830))REPRESENTATION_CONTEXT
|
||||
('ID3','3'));
|
||||
#833=APPLICATION_CONTEXT
|
||||
('CONFIGURATION CONTROLLED 3D DESIGNS OF MECHANICAL PARTS AND ASSEMBLIES');
|
||||
#834=APPLICATION_PROTOCOL_DEFINITION('international standard',
|
||||
'config_control_design',1994,#833);
|
||||
#835=DESIGN_CONTEXT('',#833,'design');
|
||||
#836=MECHANICAL_CONTEXT('',#833,'mechanical');
|
||||
#837=PRODUCT('ROD_PLACE_ASM','ROD_PLACE_ASM','NOT SPECIFIED',(#836));
|
||||
#838=PRODUCT_DEFINITION_FORMATION_WITH_SPECIFIED_SOURCE('1','LAST_VERSION',#837,.MADE.);
|
||||
#840=PRODUCT_CATEGORY('part','');
|
||||
#841=PRODUCT_RELATED_PRODUCT_CATEGORY('assembly','',(#837));
|
||||
#842=PRODUCT_CATEGORY_RELATIONSHIP('','',#840,#841);
|
||||
#843=PRODUCT_CATEGORY('part','');
|
||||
#844=PRODUCT_RELATED_PRODUCT_CATEGORY('detail','',(#582,#766));
|
||||
#845=PRODUCT_CATEGORY_RELATIONSHIP('','',#843,#844);
|
||||
#846=SECURITY_CLASSIFICATION_LEVEL('unclassified');
|
||||
#847=SECURITY_CLASSIFICATION('','',#846);
|
||||
#848=CC_DESIGN_SECURITY_CLASSIFICATION(#847,(#583,#767,#838,#590,#771,#780,#789,#798,#807,#816));
|
||||
#849=APPROVAL_STATUS('approved');
|
||||
#850=APPROVAL(#849,'');
|
||||
#851=CC_DESIGN_APPROVAL(#850,(#847,#583,#767,#838,#584,#768,#839));
|
||||
#852=CALENDAR_DATE(98,27,2);
|
||||
#853=COORDINATED_UNIVERSAL_TIME_OFFSET(1,0,.AHEAD.);
|
||||
#854=LOCAL_TIME(10,19,1.5E1,#853);
|
||||
#855=DATE_AND_TIME(#852,#854);
|
||||
#856=APPROVAL_DATE_TIME(#855,#850);
|
||||
#857=DATE_TIME_ROLE('creation_date');
|
||||
#858=CC_DESIGN_DATE_AND_TIME_ASSIGNMENT(#855,#857,(#584,#768,#839));
|
||||
#859=DATE_TIME_ROLE('classification_date');
|
||||
#860=CC_DESIGN_DATE_AND_TIME_ASSIGNMENT(#855,#859,(#847));
|
||||
#861=PERSON('UNSPECIFIED','UNSPECIFIED',$,$,$,$);
|
||||
#862=ORGANIZATION('UNSPECIFIED','UNSPECIFIED','UNSPECIFIED');
|
||||
#863=PERSON_AND_ORGANIZATION(#861,#862);
|
||||
#864=APPROVAL_ROLE('approver');
|
||||
#865=APPROVAL_PERSON_ORGANIZATION(#863,#850,#864);
|
||||
#866=PERSON_AND_ORGANIZATION_ROLE('creator');
|
||||
#867=CC_DESIGN_PERSON_AND_ORGANIZATION_ASSIGNMENT(#863,#866,(#583,#767,#838,#584,#768,#839));
|
||||
#868=PERSON_AND_ORGANIZATION_ROLE('design_supplier');
|
||||
#869=CC_DESIGN_PERSON_AND_ORGANIZATION_ASSIGNMENT(#863,#868,(#583,#767,#838));
|
||||
#870=PERSON_AND_ORGANIZATION_ROLE('classification_officer');
|
||||
#871=CC_DESIGN_PERSON_AND_ORGANIZATION_ASSIGNMENT(#863,#870,(#847));
|
||||
#872=PERSON_AND_ORGANIZATION_ROLE('design_owner');
|
||||
#873=CC_DESIGN_PERSON_AND_ORGANIZATION_ASSIGNMENT(#863,#872,(#837,#582,#766));
|
||||
#134=EDGE_CURVE('', #99,#100,'',#12,.T.);
|
||||
|
||||
#136=EDGE_CURVE('', #99,#107,'',#4,.T.);
|
||||
|
||||
#138=EDGE_CURVE('', #107,#108,'',#68,.T.);
|
||||
|
||||
#140=EDGE_CURVE('', #100,#108,'',#96,.T.);
|
||||
|
||||
#150=EDGE_CURVE('', #104,#99,'',#8,.T.);
|
||||
|
||||
#153=EDGE_CURVE('', #100,#102,'',#16,.T.);
|
||||
|
||||
#155=EDGE_CURVE('', #102,#118,'',#20,.T.);
|
||||
|
||||
#157=EDGE_CURVE('', #116,#118,'',#24,.T.);
|
||||
|
||||
#159=EDGE_CURVE('', #115,#116,'',#28,.T.);
|
||||
|
||||
#161=EDGE_CURVE('', #120,#115,'',#32,.T.);
|
||||
|
||||
#163=EDGE_CURVE('', #120,#104,'',#36,.T.);
|
||||
|
||||
#174=EDGE_CURVE('', #104,#112,'',#40,.T.);
|
||||
|
||||
#176=EDGE_CURVE('', #112,#107,'',#72,.T.);
|
||||
|
||||
#187=EDGE_CURVE('', #120,#128,'',#52,.T.);
|
||||
|
||||
#189=EDGE_CURVE('', #128,#112,'',#76,.T.);
|
||||
|
||||
#201=EDGE_CURVE('', #102,#110,'',#44,.T.);
|
||||
|
||||
#203=EDGE_CURVE('', #110,#126,'',#92,.T.);
|
||||
|
||||
#205=EDGE_CURVE('', #118,#126,'',#48,.T.);
|
||||
|
||||
#217=EDGE_CURVE('', #115,#123,'',#56,.T.);
|
||||
|
||||
#219=EDGE_CURVE('', #128,#123,'',#80,.T.);
|
||||
|
||||
#231=EDGE_CURVE('', #116,#124,'',#60,.T.);
|
||||
|
||||
#233=EDGE_CURVE('', #123,#124,'',#84,.T.);
|
||||
|
||||
#246=EDGE_CURVE('', #124,#126,'',#88,.T.);
|
||||
|
||||
#257=EDGE_CURVE('', #108,#110,'',#64,.T.);
|
||||
|
||||
#416=EDGE_CURVE('', #381,#382,'',#290,.T.);
|
||||
|
||||
#418=EDGE_CURVE('', #381,#389,'',#286,.T.);
|
||||
|
||||
#420=EDGE_CURVE('', #389,#390,'',#334,.T.);
|
||||
|
||||
#422=EDGE_CURVE('', #382,#390,'',#322,.T.);
|
||||
|
||||
#433=EDGE_CURVE('', #382,#384,'',#294,.T.);
|
||||
|
||||
#435=EDGE_CURVE('', #384,#386,'',#298,.T.);
|
||||
|
||||
#437=EDGE_CURVE('', #386,#402,'',#302,.T.);
|
||||
|
||||
#439=EDGE_CURVE('', #400,#402,'',#306,.T.);
|
||||
|
||||
#441=EDGE_CURVE('', #398,#400,'',#310,.T.);
|
||||
|
||||
#443=EDGE_CURVE('', #397,#398,'',#314,.T.);
|
||||
|
||||
#445=EDGE_CURVE('', #397,#381,'',#318,.T.);
|
||||
|
||||
#457=EDGE_CURVE('', #390,#392,'',#330,.T.);
|
||||
|
||||
#459=EDGE_CURVE('', #384,#392,'',#358,.T.);
|
||||
|
||||
#469=EDGE_CURVE('', #392,#394,'',#326,.T.);
|
||||
|
||||
#473=EDGE_CURVE('', #405,#389,'',#338,.T.);
|
||||
|
||||
#475=EDGE_CURVE('', #405,#406,'',#342,.T.);
|
||||
|
||||
#477=EDGE_CURVE('', #406,#408,'',#346,.T.);
|
||||
|
||||
#479=EDGE_CURVE('', #408,#410,'',#350,.T.);
|
||||
|
||||
#481=EDGE_CURVE('', #394,#410,'',#354,.T.);
|
||||
|
||||
#494=EDGE_CURVE('', #386,#394,'',#362,.T.);
|
||||
|
||||
#504=EDGE_CURVE('', #397,#405,'',#370,.T.);
|
||||
|
||||
#519=EDGE_CURVE('', #402,#410,'',#366,.T.);
|
||||
|
||||
#531=EDGE_CURVE('', #398,#406,'',#374,.T.);
|
||||
|
||||
#544=EDGE_CURVE('', #400,#408,'',#378,.T.);
|
||||
|
||||
#577=ADVANCED_BREP_SHAPE_REPRESENTATION('',(#576,#282,#564),#572);
|
||||
#584=PRODUCT_DEFINITION('design','',#583,#580);
|
||||
#585=PRODUCT_DEFINITION_SHAPE('','SHAPE FOR ROD.',#584);
|
||||
#586=SHAPE_DEFINITION_REPRESENTATION(#585,#577);
|
||||
#587=SHAPE_DEFINITION_REPRESENTATION(#588,#589);
|
||||
#588=PRODUCT_DEFINITION_SHAPE('','SHAPE FOR ROD_PLACE_ASM.',#839);
|
||||
#589=SHAPE_REPRESENTATION('',(#595,#776,#785,#794,#803,#812,#821),#832);
|
||||
#590=NEXT_ASSEMBLY_USAGE_OCCURRENCE('0','Next assembly relationship','',#839,#584,$);
|
||||
#591=PRODUCT_DEFINITION_SHAPE('Placement #0','Placement of ROD with respect to ROD_PLACE_ASM',#590);
|
||||
#668=EDGE_CURVE('', #649,#650,'',#602,.T.);
|
||||
|
||||
#670=EDGE_CURVE('', #650,#652,'',#606,.T.);
|
||||
|
||||
#672=EDGE_CURVE('', #652,#654,'',#610,.T.);
|
||||
|
||||
#674=EDGE_CURVE('', #654,#649,'',#614,.T.);
|
||||
|
||||
#685=EDGE_CURVE('', #649,#657,'',#618,.T.);
|
||||
|
||||
#687=EDGE_CURVE('', #657,#658,'',#634,.T.);
|
||||
|
||||
#689=EDGE_CURVE('', #650,#658,'',#630,.T.);
|
||||
|
||||
#700=EDGE_CURVE('', #654,#662,'',#622,.T.);
|
||||
|
||||
#702=EDGE_CURVE('', #662,#657,'',#638,.T.);
|
||||
|
||||
#714=EDGE_CURVE('', #652,#660,'',#626,.T.);
|
||||
|
||||
#716=EDGE_CURVE('', #660,#662,'',#642,.T.);
|
||||
|
||||
#729=EDGE_CURVE('', #658,#660,'',#646,.T.);
|
||||
|
||||
#761=ADVANCED_BREP_SHAPE_REPRESENTATION('',(#760,#748),#756);
|
||||
#768=PRODUCT_DEFINITION('design','',#767,#764);
|
||||
#769=PRODUCT_DEFINITION_SHAPE('','SHAPE FOR MODULE.',#768);
|
||||
#770=SHAPE_DEFINITION_REPRESENTATION(#769,#761);
|
||||
#771=NEXT_ASSEMBLY_USAGE_OCCURRENCE('1','Next assembly relationship','',#839,#768,$);
|
||||
#772=PRODUCT_DEFINITION_SHAPE('Placement #1','Placement of MODULE with respect to ROD_PLACE_ASM',#771);
|
||||
#780=NEXT_ASSEMBLY_USAGE_OCCURRENCE('2','Next assembly relationship','',#839,#768,$);
|
||||
#781=PRODUCT_DEFINITION_SHAPE('Placement #2','Placement of MODULE with respect to ROD_PLACE_ASM',#780);
|
||||
#789=NEXT_ASSEMBLY_USAGE_OCCURRENCE('3','Next assembly relationship','',#839,#768,$);
|
||||
#790=PRODUCT_DEFINITION_SHAPE('Placement #3','Placement of MODULE with respect to ROD_PLACE_ASM',#789);
|
||||
#798=NEXT_ASSEMBLY_USAGE_OCCURRENCE('4','Next assembly relationship','',#839,#768,$);
|
||||
#799=PRODUCT_DEFINITION_SHAPE('Placement #4','Placement of MODULE with respect to ROD_PLACE_ASM',#798);
|
||||
#807=NEXT_ASSEMBLY_USAGE_OCCURRENCE('5','Next assembly relationship','',#839,#768,$);
|
||||
#808=PRODUCT_DEFINITION_SHAPE('Placement #5','Placement of MODULE with respect to ROD_PLACE_ASM',#807);
|
||||
#816=NEXT_ASSEMBLY_USAGE_OCCURRENCE('6','Next assembly relationship','',#839,#768,$);
|
||||
#817=PRODUCT_DEFINITION_SHAPE('Placement #6','Placement of MODULE with respect to ROD_PLACE_ASM',#816);
|
||||
#839=PRODUCT_DEFINITION('design','',#838,#835);
|
||||
ENDSEC;
|
||||
END-ISO-10303-21;
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
File diff suppressed because it is too large
Load Diff
Executable
+41
@@ -0,0 +1,41 @@
|
||||
#!/usr/bin/perl
|
||||
|
||||
$filename = $ARGV[0];
|
||||
open(INFILE, $filename) || die "\nSTEP file ".$filename." not found.";
|
||||
print "Opening file ".$filename;
|
||||
@filebuf = <INFILE>;
|
||||
close(INFILE);
|
||||
|
||||
$g4 = "G4";
|
||||
$outputfile = $g4 . $filename;
|
||||
open(OUTFILE, ">$outputfile");
|
||||
print "\nModifying STEP file for NIST toolkit...";
|
||||
|
||||
foreach (@filebuf)
|
||||
{
|
||||
if(/.*VERTEX\_POINT.*/)
|
||||
{
|
||||
s/VERTEX\_POINT\(\'\'\,/VERTEX\_POINT\(\'\'\,\'\'\,/g ;
|
||||
}
|
||||
elsif(/.*EDGE\_LOOP.*/)
|
||||
{
|
||||
s/EDGE\_LOOP\(\'\'\,/EDGE\_LOOP\(\'\'\,\'\'\,/g;
|
||||
}
|
||||
elsif(/.*ADVANCED\_FACE.*/)
|
||||
{
|
||||
($a,$b,$c) = split('\)',$&);
|
||||
s//$a\)\,\'\' $b\)$c\n/;
|
||||
}
|
||||
elsif(/.*EDGE\_CURVE.*/)
|
||||
{
|
||||
($a,$b,$c,$d,$e) = split(",",$&);
|
||||
s//$a\, $b\,$c\,\'\'\,$d\,$e\n/;
|
||||
}
|
||||
|
||||
print OUTFILE;
|
||||
}
|
||||
|
||||
close(OUTFILE);
|
||||
print "\nOutput written to ".$outputfile."\n";
|
||||
|
||||
|
||||
@@ -0,0 +1,23 @@
|
||||
# $Id: GNUmakefile,v 2.2 1998/10/14 15:47:16 allison Exp $
|
||||
# --------------------------------------------------------------
|
||||
# GNUmakefile for examples module. Gabriele Cosmo, 06/04/98.
|
||||
# --------------------------------------------------------------
|
||||
|
||||
ifndef G4INSTALL
|
||||
G4INSTALL = ../..
|
||||
endif
|
||||
|
||||
include $(G4INSTALL)/config/architecture.gmk
|
||||
|
||||
SUBDIRS = N01 N02 N03 N04 N05 N06
|
||||
|
||||
.PHONY : all clean clean_libs
|
||||
|
||||
all:
|
||||
@for dir in $(SUBDIRS); do (cd $$dir; $(MAKE)); done
|
||||
|
||||
clean:
|
||||
@for dir in $(SUBDIRS); do (cd $$dir; $(MAKE) clean); done
|
||||
|
||||
clean_libs:
|
||||
@for dir in $(SUBDIRS); do (cd $$dir; $(MAKE) clean_libs); done
|
||||
@@ -0,0 +1,17 @@
|
||||
# $Id: GNUmakefile,v 2.1 1998/07/02 15:26:45 gunter Exp $
|
||||
# --------------------------------------------------------------
|
||||
# GNUmakefile for examples module. Gabriele Cosmo, 06/04/98.
|
||||
# --------------------------------------------------------------
|
||||
|
||||
name := exampleN01
|
||||
G4TARGET := $(name)
|
||||
G4EXLIB := true
|
||||
|
||||
ifndef G4INSTALL
|
||||
G4INSTALL = ../../..
|
||||
endif
|
||||
|
||||
.PHONY: all
|
||||
all: lib bin
|
||||
|
||||
include $(G4INSTALL)/config/binmake.gmk
|
||||
@@ -0,0 +1,37 @@
|
||||
# $Id: GNUmakefile.light,v 2.1 1998/07/23 07:15:18 gcosmo Exp $
|
||||
# --------------------------------------------------------------
|
||||
# GNUmakefile for examples module. Gabriele Cosmo, 06/04/98.
|
||||
# --------------------------------------------------------------
|
||||
|
||||
name := exampleN01
|
||||
G4TARGET := $(name)
|
||||
G4EXLIB := true
|
||||
|
||||
ifndef G4INSTALL
|
||||
G4INSTALL = ../../..
|
||||
endif
|
||||
|
||||
LDLIBS := \
|
||||
-l$(G4TARGET) \
|
||||
-lG4run \
|
||||
-lG4event \
|
||||
-lG4tracking \
|
||||
-lG4bosons \
|
||||
-lG4partman \
|
||||
-lG4transportation \
|
||||
-lG4procman \
|
||||
-lG4track \
|
||||
-lG4materials \
|
||||
-lG4digits+hits \
|
||||
-lG4csg \
|
||||
-lG4geometrymng \
|
||||
-lG4volumes \
|
||||
-lG4magneticfield \
|
||||
-lG4graphics_reps \
|
||||
-lG4intercoms \
|
||||
-lG4global
|
||||
|
||||
.PHONY: all
|
||||
all: lib bin
|
||||
|
||||
include $(G4INSTALL)/config/binmake.gmk
|
||||
@@ -0,0 +1,23 @@
|
||||
$Id: History,v 2.0 1998/07/02 14:05:34 gunter Exp $
|
||||
-------------------------------------------------------------------
|
||||
|
||||
=========================================================
|
||||
Geant4 - an Object-Oriented Toolkit for Simulation in HEP
|
||||
=========================================================
|
||||
|
||||
Example N01 History file
|
||||
------------------------
|
||||
This file should be used by the G4 example coordinator to briefly
|
||||
summarize all major modifications introduced in the code and keep
|
||||
track of all tags.
|
||||
|
||||
----------------------------------------------------------
|
||||
* Reverse chronological order (last date on top), please *
|
||||
----------------------------------------------------------
|
||||
|
||||
May 07, 98 M.Asai
|
||||
- First commitment of all classes.
|
||||
|
||||
April 09, 98 G. Cosmo
|
||||
|
||||
- Created.
|
||||
@@ -0,0 +1,57 @@
|
||||
$Id: README,v 2.1 1998/09/27 07:19:57 asaim Exp $
|
||||
-------------------------------------------------------------------
|
||||
|
||||
=========================================================
|
||||
Geant4 - an Object-Oriented Toolkit for Simulation in HEP
|
||||
=========================================================
|
||||
|
||||
ExampleN01
|
||||
----------
|
||||
|
||||
ExampleN01 is the simplest example in this novice level examples. It has
|
||||
a tracker tube and a sandwitch calorimeter made of boxes. It shoots a
|
||||
geantino (pseudo-particle which has no "real" physics interaction) per
|
||||
one event. This example demonstrates how the basic GEANT4 framework works.
|
||||
|
||||
1. Detector descreption
|
||||
|
||||
The detector is defined in ExN01DetectorConstruction.cc. Argon gas,
|
||||
alminum and lead are defined first, where all of them are single element
|
||||
material. Though materials are assigned for each volume, they will not
|
||||
affect to the trajectory of a geantino.
|
||||
|
||||
The experimental hall, which is the world volume, is made of alminum
|
||||
and it is a box. The tracker tube made of argon gas is placed at
|
||||
(-1m,0m,0m) respect to the origin of the world volume. The calorimeter
|
||||
block made of lead and it has 19 layers of alminum plates inside.
|
||||
|
||||
2. Physics processes
|
||||
|
||||
ExN01PhysicsList.cc defines only a geantino and a transprotation
|
||||
process. Though cutoff will not be applied onto geantino, a dummy
|
||||
valume must be set.
|
||||
|
||||
3. Event generation
|
||||
|
||||
G4ParticleGun is instanciated in the constructor of
|
||||
ExN01PrimaryGeneratorAction class. At the every event, the public
|
||||
method GeneratePrimaries(G4Event*) is invoked. In this method,
|
||||
G4ParticleGun is accessed to generate a primary particle (geantino).
|
||||
Please note that the direction of the primary particle is set
|
||||
just before shooting, i.e. GeneratePrimaryVertex() method invokation.
|
||||
G4ParticleGun class itself does not have any capability of randomizing
|
||||
the energy nor momentum of the primary particle. Thus the user should
|
||||
implement randomizing code in GeneratePrimaries() method.
|
||||
|
||||
4. main()
|
||||
|
||||
exampleN01.cc has the main() method. In this main() method, three
|
||||
mandatory user classes described above are constructed and set to
|
||||
the G4RunManager object. Then, "Initialize()" method of G4RunManager
|
||||
is invoked.
|
||||
Some UI commands for setting verbosity are applied via hardly coded
|
||||
"ApplyCommand()" method of G4UImanager class.
|
||||
"BeamOn()" method triggers the event loop. The argument of this
|
||||
method is the number of event in this run.
|
||||
|
||||
|
||||
@@ -0,0 +1,61 @@
|
||||
// This code implementation is the intellectual property of
|
||||
// the RD44 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: exampleN01.cc,v 2.3 1998/12/08 16:37:27 allison Exp $
|
||||
// GEANT4 tag $Name: geant4-00 $
|
||||
//
|
||||
//
|
||||
// --------------------------------------------------------------
|
||||
// GEANT 4 - exampleN01
|
||||
//
|
||||
// For information related to this code contact:
|
||||
// CERN, IT Division, ASD Group
|
||||
// --------------------------------------------------------------
|
||||
// Comments
|
||||
//
|
||||
//
|
||||
// --------------------------------------------------------------
|
||||
|
||||
#include "G4RunManager.hh"
|
||||
#include "G4UImanager.hh"
|
||||
|
||||
#include "ExN01DetectorConstruction.hh"
|
||||
#include "ExN01PhysicsList.hh"
|
||||
#include "ExN01PrimaryGeneratorAction.hh"
|
||||
|
||||
|
||||
int main()
|
||||
{
|
||||
// Construct the default run manager
|
||||
G4RunManager* runManager = new G4RunManager;
|
||||
|
||||
// set mandatory initialization classes
|
||||
runManager->SetUserInitialization(new ExN01DetectorConstruction);
|
||||
runManager->SetUserInitialization(new ExN01PhysicsList);
|
||||
|
||||
// set mandatory user action class
|
||||
runManager->SetUserAction(new ExN01PrimaryGeneratorAction);
|
||||
|
||||
// Initialize G4 kernel
|
||||
runManager->Initialize();
|
||||
|
||||
// get the pointer to the UI manager and set verbosities
|
||||
G4UImanager* UI = G4UImanager::GetUIpointer();
|
||||
UI->ApplyCommand("/run/verbose 1");
|
||||
UI->ApplyCommand("/event/verbose 1");
|
||||
UI->ApplyCommand("/tracking/verbose 1");
|
||||
|
||||
// start a run
|
||||
int numberOfEvent = 3;
|
||||
runManager->BeamOn(numberOfEvent);
|
||||
|
||||
// job termination
|
||||
delete runManager;
|
||||
return 0;
|
||||
}
|
||||
|
||||
|
||||
@@ -0,0 +1,192 @@
|
||||
Start Run processing.
|
||||
=====================================
|
||||
G4EventManager::ProcessOneEvent()
|
||||
=====================================
|
||||
1 primaries are passed from G4EventTransformer.
|
||||
!!!!!!! Now start processing an event !!!!!!!
|
||||
### pop requested out of 1 stacked tracks.
|
||||
|
||||
*********************************************************************************************************
|
||||
* G4Track Information: Particle = geantino, Track ID = 1, Parent ID = 0
|
||||
*********************************************************************************************************
|
||||
|
||||
Step# X(mm) Y(mm) Z(mm) KinE(MeV) dE(MeV) StepLeng TrackLeng NextVolume ProcName
|
||||
0 -2e+03 0 0 1e+03 0 0 0 expHall initStep
|
||||
1 -1.6e+03 0 0 1e+03 0 400 400 tracker Transportation
|
||||
2 -400 0 0 1e+03 0 1.2e+03 1.6e+03 expHall Transportation
|
||||
3 0 0 0 1e+03 0 400 2e+03 caloBlock Transportation
|
||||
4 90 0 0 1e+03 0 90 2.09e+03 caloLayer Transportation
|
||||
5 110 0 0 1e+03 0 20 2.11e+03 caloBlock Transportation
|
||||
6 190 0 0 1e+03 0 80 2.19e+03 caloLayer Transportation
|
||||
7 210 0 0 1e+03 0 20 2.21e+03 caloBlock Transportation
|
||||
8 290 0 0 1e+03 0 80 2.29e+03 caloLayer Transportation
|
||||
9 310 0 0 1e+03 0 20 2.31e+03 caloBlock Transportation
|
||||
10 390 0 0 1e+03 0 80 2.39e+03 caloLayer Transportation
|
||||
11 410 0 0 1e+03 0 20 2.41e+03 caloBlock Transportation
|
||||
12 490 0 0 1e+03 0 80 2.49e+03 caloLayer Transportation
|
||||
13 510 0 0 1e+03 0 20 2.51e+03 caloBlock Transportation
|
||||
14 590 0 0 1e+03 0 80 2.59e+03 caloLayer Transportation
|
||||
15 610 0 0 1e+03 0 20 2.61e+03 caloBlock Transportation
|
||||
16 690 0 0 1e+03 0 80 2.69e+03 caloLayer Transportation
|
||||
17 710 0 0 1e+03 0 20 2.71e+03 caloBlock Transportation
|
||||
18 790 0 0 1e+03 0 80 2.79e+03 caloLayer Transportation
|
||||
19 810 0 0 1e+03 0 20 2.81e+03 caloBlock Transportation
|
||||
20 890 0 0 1e+03 0 80 2.89e+03 caloLayer Transportation
|
||||
21 910 0 0 1e+03 0 20 2.91e+03 caloBlock Transportation
|
||||
22 990 0 0 1e+03 0 80 2.99e+03 caloLayer Transportation
|
||||
23 1.01e+03 0 0 1e+03 0 20 3.01e+03 caloBlock Transportation
|
||||
24 1.09e+03 0 0 1e+03 0 80 3.09e+03 caloLayer Transportation
|
||||
25 1.11e+03 0 0 1e+03 0 20 3.11e+03 caloBlock Transportation
|
||||
26 1.19e+03 0 0 1e+03 0 80 3.19e+03 caloLayer Transportation
|
||||
27 1.21e+03 0 0 1e+03 0 20 3.21e+03 caloBlock Transportation
|
||||
28 1.29e+03 0 0 1e+03 0 80 3.29e+03 caloLayer Transportation
|
||||
29 1.31e+03 0 0 1e+03 0 20 3.31e+03 caloBlock Transportation
|
||||
30 1.39e+03 0 0 1e+03 0 80 3.39e+03 caloLayer Transportation
|
||||
31 1.41e+03 0 0 1e+03 0 20 3.41e+03 caloBlock Transportation
|
||||
32 1.49e+03 0 0 1e+03 0 80 3.49e+03 caloLayer Transportation
|
||||
33 1.51e+03 0 0 1e+03 0 20 3.51e+03 caloBlock Transportation
|
||||
34 1.59e+03 0 0 1e+03 0 80 3.59e+03 caloLayer Transportation
|
||||
35 1.61e+03 0 0 1e+03 0 20 3.61e+03 caloBlock Transportation
|
||||
36 1.69e+03 0 0 1e+03 0 80 3.69e+03 caloLayer Transportation
|
||||
37 1.71e+03 0 0 1e+03 0 20 3.71e+03 caloBlock Transportation
|
||||
38 1.79e+03 0 0 1e+03 0 80 3.79e+03 caloLayer Transportation
|
||||
39 1.81e+03 0 0 1e+03 0 20 3.81e+03 caloBlock Transportation
|
||||
40 1.89e+03 0 0 1e+03 0 80 3.89e+03 caloLayer Transportation
|
||||
41 1.91e+03 0 0 1e+03 0 20 3.91e+03 caloBlock Transportation
|
||||
42 2e+03 0 0 1e+03 0 90 4e+03 expHall Transportation
|
||||
43 3e+03 0 0 1e+03 0 1e+03 5e+03 OutOfWorld Transportation
|
||||
Track (trackID 1, parentID 0) is processed with stopping code 2
|
||||
### pop requested out of 0 stacked tracks.
|
||||
### 0 waiting tracks are re-classified to
|
||||
0 urgent tracks and 0 waiting tracks.
|
||||
NULL returned from G4StackManager.
|
||||
Terminate current event processing.
|
||||
=====================================
|
||||
G4EventManager::ProcessOneEvent()
|
||||
=====================================
|
||||
1 primaries are passed from G4EventTransformer.
|
||||
!!!!!!! Now start processing an event !!!!!!!
|
||||
### pop requested out of 1 stacked tracks.
|
||||
|
||||
*********************************************************************************************************
|
||||
* G4Track Information: Particle = geantino, Track ID = 1, Parent ID = 0
|
||||
*********************************************************************************************************
|
||||
|
||||
Step# X(mm) Y(mm) Z(mm) KinE(MeV) dE(MeV) StepLeng TrackLeng NextVolume ProcName
|
||||
0 -2e+03 0 0 1e+03 0 0 0 expHall initStep
|
||||
1 -1.6e+03 40.1 0 1e+03 0 403 403 tracker Transportation
|
||||
2 -421 158 0 1e+03 0 1.18e+03 1.59e+03 expHall Transportation
|
||||
3 0 200 0 1e+03 0 423 2.01e+03 caloBlock Transportation
|
||||
4 90 209 0 1e+03 0 90.4 2.1e+03 caloLayer Transportation
|
||||
5 110 211 0 1e+03 0 20.1 2.12e+03 caloBlock Transportation
|
||||
6 190 219 0 1e+03 0 80.4 2.2e+03 caloLayer Transportation
|
||||
7 210 221 0 1e+03 0 20.1 2.22e+03 caloBlock Transportation
|
||||
8 290 229 0 1e+03 0 80.4 2.3e+03 caloLayer Transportation
|
||||
9 310 231 0 1e+03 0 20.1 2.32e+03 caloBlock Transportation
|
||||
10 390 239 0 1e+03 0 80.4 2.4e+03 caloLayer Transportation
|
||||
11 410 241 0 1e+03 0 20.1 2.42e+03 caloBlock Transportation
|
||||
12 490 249 0 1e+03 0 80.4 2.5e+03 caloLayer Transportation
|
||||
13 510 251 0 1e+03 0 20.1 2.52e+03 caloBlock Transportation
|
||||
14 590 259 0 1e+03 0 80.4 2.6e+03 caloLayer Transportation
|
||||
15 610 261 0 1e+03 0 20.1 2.62e+03 caloBlock Transportation
|
||||
16 690 269 0 1e+03 0 80.4 2.7e+03 caloLayer Transportation
|
||||
17 710 271 0 1e+03 0 20.1 2.72e+03 caloBlock Transportation
|
||||
18 790 279 0 1e+03 0 80.4 2.8e+03 caloLayer Transportation
|
||||
19 810 281 0 1e+03 0 20.1 2.82e+03 caloBlock Transportation
|
||||
20 890 289 0 1e+03 0 80.4 2.9e+03 caloLayer Transportation
|
||||
21 910 291 0 1e+03 0 20.1 2.92e+03 caloBlock Transportation
|
||||
22 990 299 0 1e+03 0 80.4 3e+03 caloLayer Transportation
|
||||
23 1.01e+03 301 0 1e+03 0 20.1 3.03e+03 caloBlock Transportation
|
||||
24 1.09e+03 309 0 1e+03 0 80.4 3.11e+03 caloLayer Transportation
|
||||
25 1.11e+03 311 0 1e+03 0 20.1 3.13e+03 caloBlock Transportation
|
||||
26 1.19e+03 319 0 1e+03 0 80.4 3.21e+03 caloLayer Transportation
|
||||
27 1.21e+03 321 0 1e+03 0 20.1 3.23e+03 caloBlock Transportation
|
||||
28 1.29e+03 329 0 1e+03 0 80.4 3.31e+03 caloLayer Transportation
|
||||
29 1.31e+03 331 0 1e+03 0 20.1 3.33e+03 caloBlock Transportation
|
||||
30 1.39e+03 339 0 1e+03 0 80.4 3.41e+03 caloLayer Transportation
|
||||
31 1.41e+03 341 0 1e+03 0 20.1 3.43e+03 caloBlock Transportation
|
||||
32 1.49e+03 349 0 1e+03 0 80.4 3.51e+03 caloLayer Transportation
|
||||
33 1.51e+03 351 0 1e+03 0 20.1 3.53e+03 caloBlock Transportation
|
||||
34 1.59e+03 359 0 1e+03 0 80.4 3.61e+03 caloLayer Transportation
|
||||
35 1.61e+03 361 0 1e+03 0 20.1 3.63e+03 caloBlock Transportation
|
||||
36 1.69e+03 369 0 1e+03 0 80.4 3.71e+03 caloLayer Transportation
|
||||
37 1.71e+03 371 0 1e+03 0 20.1 3.73e+03 caloBlock Transportation
|
||||
38 1.79e+03 379 0 1e+03 0 80.4 3.81e+03 caloLayer Transportation
|
||||
39 1.81e+03 381 0 1e+03 0 20.1 3.83e+03 caloBlock Transportation
|
||||
40 1.89e+03 389 0 1e+03 0 80.4 3.91e+03 caloLayer Transportation
|
||||
41 1.91e+03 391 0 1e+03 0 20.1 3.93e+03 caloBlock Transportation
|
||||
42 2e+03 400 0 1e+03 0 90.4 4.02e+03 expHall Transportation
|
||||
43 3e+03 500 0 1e+03 0 1e+03 5.02e+03 OutOfWorld Transportation
|
||||
Track (trackID 1, parentID 0) is processed with stopping code 2
|
||||
### pop requested out of 0 stacked tracks.
|
||||
### 0 waiting tracks are re-classified to
|
||||
0 urgent tracks and 0 waiting tracks.
|
||||
NULL returned from G4StackManager.
|
||||
Terminate current event processing.
|
||||
=====================================
|
||||
G4EventManager::ProcessOneEvent()
|
||||
=====================================
|
||||
1 primaries are passed from G4EventTransformer.
|
||||
!!!!!!! Now start processing an event !!!!!!!
|
||||
### pop requested out of 1 stacked tracks.
|
||||
|
||||
*********************************************************************************************************
|
||||
* G4Track Information: Particle = geantino, Track ID = 1, Parent ID = 0
|
||||
*********************************************************************************************************
|
||||
|
||||
Step# X(mm) Y(mm) Z(mm) KinE(MeV) dE(MeV) StepLeng TrackLeng NextVolume ProcName
|
||||
0 -2e+03 0 0 1e+03 0 0 0 expHall initStep
|
||||
1 -1.6e+03 0 40 1e+03 0 402 402 tracker Transportation
|
||||
2 -400 0 160 1e+03 0 1.21e+03 1.61e+03 expHall Transportation
|
||||
3 0 0 200 1e+03 0 402 2.01e+03 caloBlock Transportation
|
||||
4 90 0 209 1e+03 0 90.4 2.1e+03 caloLayer Transportation
|
||||
5 110 0 211 1e+03 0 20.1 2.12e+03 caloBlock Transportation
|
||||
6 190 0 219 1e+03 0 80.4 2.2e+03 caloLayer Transportation
|
||||
7 210 0 221 1e+03 0 20.1 2.22e+03 caloBlock Transportation
|
||||
8 290 0 229 1e+03 0 80.4 2.3e+03 caloLayer Transportation
|
||||
9 310 0 231 1e+03 0 20.1 2.32e+03 caloBlock Transportation
|
||||
10 390 0 239 1e+03 0 80.4 2.4e+03 caloLayer Transportation
|
||||
11 410 0 241 1e+03 0 20.1 2.42e+03 caloBlock Transportation
|
||||
12 490 0 249 1e+03 0 80.4 2.5e+03 caloLayer Transportation
|
||||
13 510 0 251 1e+03 0 20.1 2.52e+03 caloBlock Transportation
|
||||
14 590 0 259 1e+03 0 80.4 2.6e+03 caloLayer Transportation
|
||||
15 610 0 261 1e+03 0 20.1 2.62e+03 caloBlock Transportation
|
||||
16 690 0 269 1e+03 0 80.4 2.7e+03 caloLayer Transportation
|
||||
17 710 0 271 1e+03 0 20.1 2.72e+03 caloBlock Transportation
|
||||
18 790 0 279 1e+03 0 80.4 2.8e+03 caloLayer Transportation
|
||||
19 810 0 281 1e+03 0 20.1 2.82e+03 caloBlock Transportation
|
||||
20 890 0 289 1e+03 0 80.4 2.9e+03 caloLayer Transportation
|
||||
21 910 0 291 1e+03 0 20.1 2.92e+03 caloBlock Transportation
|
||||
22 990 0 299 1e+03 0 80.4 3e+03 caloLayer Transportation
|
||||
23 1.01e+03 0 301 1e+03 0 20.1 3.03e+03 caloBlock Transportation
|
||||
24 1.09e+03 0 309 1e+03 0 80.4 3.11e+03 caloLayer Transportation
|
||||
25 1.11e+03 0 311 1e+03 0 20.1 3.13e+03 caloBlock Transportation
|
||||
26 1.19e+03 0 319 1e+03 0 80.4 3.21e+03 caloLayer Transportation
|
||||
27 1.21e+03 0 321 1e+03 0 20.1 3.23e+03 caloBlock Transportation
|
||||
28 1.29e+03 0 329 1e+03 0 80.4 3.31e+03 caloLayer Transportation
|
||||
29 1.31e+03 0 331 1e+03 0 20.1 3.33e+03 caloBlock Transportation
|
||||
30 1.39e+03 0 339 1e+03 0 80.4 3.41e+03 caloLayer Transportation
|
||||
31 1.41e+03 0 341 1e+03 0 20.1 3.43e+03 caloBlock Transportation
|
||||
32 1.49e+03 0 349 1e+03 0 80.4 3.51e+03 caloLayer Transportation
|
||||
33 1.51e+03 0 351 1e+03 0 20.1 3.53e+03 caloBlock Transportation
|
||||
34 1.59e+03 0 359 1e+03 0 80.4 3.61e+03 caloLayer Transportation
|
||||
35 1.61e+03 0 361 1e+03 0 20.1 3.63e+03 caloBlock Transportation
|
||||
36 1.69e+03 0 369 1e+03 0 80.4 3.71e+03 caloLayer Transportation
|
||||
37 1.71e+03 0 371 1e+03 0 20.1 3.73e+03 caloBlock Transportation
|
||||
38 1.79e+03 0 379 1e+03 0 80.4 3.81e+03 caloLayer Transportation
|
||||
39 1.81e+03 0 381 1e+03 0 20.1 3.83e+03 caloBlock Transportation
|
||||
40 1.89e+03 0 389 1e+03 0 80.4 3.91e+03 caloLayer Transportation
|
||||
41 1.91e+03 0 391 1e+03 0 20.1 3.93e+03 caloBlock Transportation
|
||||
42 2e+03 0 400 1e+03 0 90.4 4.02e+03 expHall Transportation
|
||||
43 3e+03 0 500 1e+03 0 1e+03 5.02e+03 OutOfWorld Transportation
|
||||
Track (trackID 1, parentID 0) is processed with stopping code 2
|
||||
### pop requested out of 0 stacked tracks.
|
||||
### 0 waiting tracks are re-classified to
|
||||
0 urgent tracks and 0 waiting tracks.
|
||||
NULL returned from G4StackManager.
|
||||
Terminate current event processing.
|
||||
Run terminated.
|
||||
Run Summary
|
||||
Number of events processed : 3
|
||||
User=0.05s Real=0.0666667s Sys=0.0166667s
|
||||
G4 kernel has come to Quit state.
|
||||
@@ -0,0 +1,31 @@
|
||||
// This code implementation is the intellectual property of
|
||||
// the RD44 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: ExN01DetectorConstruction.hh,v 2.1 1998/07/12 02:40:52 urbi Exp $
|
||||
// GEANT4 tag $Name: geant4-00 $
|
||||
//
|
||||
|
||||
#ifndef ExN01DetectorConstruction_H
|
||||
#define ExN01DetectorConstruction_H 1
|
||||
|
||||
class G4VPhysicalVolume;
|
||||
|
||||
#include "G4VUserDetectorConstruction.hh"
|
||||
|
||||
class ExN01DetectorConstruction : public G4VUserDetectorConstruction
|
||||
{
|
||||
public:
|
||||
ExN01DetectorConstruction();
|
||||
~ExN01DetectorConstruction();
|
||||
|
||||
public:
|
||||
G4VPhysicalVolume* Construct();
|
||||
|
||||
};
|
||||
|
||||
#endif
|
||||
|
||||
@@ -0,0 +1,46 @@
|
||||
// This code implementation is the intellectual property of
|
||||
// the RD44 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: ExN01PhysicsList.hh,v 2.1 1998/07/12 02:40:52 urbi Exp $
|
||||
// GEANT4 tag $Name: geant4-00 $
|
||||
//
|
||||
//
|
||||
//
|
||||
// ExN01PhysicsList
|
||||
// Construct/define particles and physics processes
|
||||
//
|
||||
// Particle defined in ExampleN01
|
||||
// geantino
|
||||
//
|
||||
// Process defined in ExampleN01
|
||||
// transportation
|
||||
//
|
||||
|
||||
#ifndef ExN01PhysicsList_h
|
||||
#define ExN01PhysicsList_h 1
|
||||
|
||||
#include "G4VUserPhysicsList.hh"
|
||||
#include "globals.hh"
|
||||
|
||||
class ExN01PhysicsList: public G4VUserPhysicsList
|
||||
{
|
||||
public:
|
||||
ExN01PhysicsList();
|
||||
~ExN01PhysicsList();
|
||||
|
||||
protected:
|
||||
// Construct particle and physics process
|
||||
void ConstructParticle();
|
||||
void ConstructProcess();
|
||||
void SetCuts(G4double cut);
|
||||
|
||||
};
|
||||
|
||||
#endif
|
||||
|
||||
|
||||
|
||||
@@ -0,0 +1,35 @@
|
||||
// This code implementation is the intellectual property of
|
||||
// the RD44 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: ExN01PrimaryGeneratorAction.hh,v 2.1 1998/07/12 02:40:53 urbi Exp $
|
||||
// GEANT4 tag $Name: geant4-00 $
|
||||
//
|
||||
|
||||
#ifndef ExN01PrimaryGeneratorAction_h
|
||||
#define ExN01PrimaryGeneratorAction_h 1
|
||||
|
||||
#include "G4VUserPrimaryGeneratorAction.hh"
|
||||
|
||||
class G4ParticleGun;
|
||||
class G4Event;
|
||||
|
||||
class ExN01PrimaryGeneratorAction : public G4VUserPrimaryGeneratorAction
|
||||
{
|
||||
public:
|
||||
ExN01PrimaryGeneratorAction();
|
||||
~ExN01PrimaryGeneratorAction();
|
||||
|
||||
public:
|
||||
void GeneratePrimaries(G4Event* anEvent);
|
||||
|
||||
private:
|
||||
G4ParticleGun* particleGun;
|
||||
};
|
||||
|
||||
#endif
|
||||
|
||||
|
||||
@@ -0,0 +1,128 @@
|
||||
// This code implementation is the intellectual property of
|
||||
// the RD44 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: ExN01DetectorConstruction.cc,v 1.1 1998/11/14 20:52:38 kurasige Exp $
|
||||
// GEANT4 tag $Name: geant4-00 $
|
||||
//
|
||||
|
||||
#include "ExN01DetectorConstruction.hh"
|
||||
|
||||
#include "G4Material.hh"
|
||||
#include "G4Box.hh"
|
||||
#include "G4Tubs.hh"
|
||||
#include "G4LogicalVolume.hh"
|
||||
#include "G4ThreeVector.hh"
|
||||
#include "G4PVPlacement.hh"
|
||||
#include "globals.hh"
|
||||
|
||||
ExN01DetectorConstruction::ExN01DetectorConstruction()
|
||||
{;}
|
||||
|
||||
ExN01DetectorConstruction::~ExN01DetectorConstruction()
|
||||
{;}
|
||||
|
||||
G4VPhysicalVolume* ExN01DetectorConstruction::Construct()
|
||||
{
|
||||
|
||||
//------------------------------------------------------ materials
|
||||
|
||||
G4double a; // atomic mass
|
||||
G4double z; // atomic number
|
||||
G4double density;
|
||||
G4String name;
|
||||
|
||||
a = 39.95*g/mole;
|
||||
density = 1.782e-03*g/cm3;
|
||||
G4Material* Ar = new G4Material(name="ArgonGas", z=18., a, density);
|
||||
|
||||
a = 26.98*g/mole;
|
||||
density = 2.7*g/cm3;
|
||||
G4Material* Al = new G4Material(name="Aluminum", z=13., a, density);
|
||||
|
||||
a = 207.19*g/mole;
|
||||
density = 11.35*g/cm3;
|
||||
G4Material* Pb = new G4Material(name="Lead", z=82., a, density);
|
||||
|
||||
//------------------------------------------------------ volumes
|
||||
|
||||
//------------------------------ experimental hall (world volume)
|
||||
//------------------------------ beam line along x axis
|
||||
|
||||
G4double expHall_x = 3.0*m;
|
||||
G4double expHall_y = 1.0*m;
|
||||
G4double expHall_z = 1.0*m;
|
||||
G4Box* experimentalHall_box
|
||||
= new G4Box("expHall_box",expHall_x,expHall_y,expHall_z);
|
||||
G4LogicalVolume* experimentalHall_log
|
||||
= new G4LogicalVolume(experimentalHall_box,Ar,"expHall_log",0,0,0);
|
||||
G4VPhysicalVolume* experimentalHall_phys
|
||||
= new G4PVPlacement(0,G4ThreeVector(),"expHall",
|
||||
experimentalHall_log,0,false,0);
|
||||
|
||||
//------------------------------ a tracker tube
|
||||
|
||||
G4double innerRadiusOfTheTube = 0.*cm;
|
||||
G4double outerRadiusOfTheTube = 60.*cm;
|
||||
G4double hightOfTheTube = 50.*cm;
|
||||
G4double startAngleOfTheTube = 0.*deg;
|
||||
G4double spanningAngleOfTheTube = 360.*deg;
|
||||
G4Tubs* tracker_tube
|
||||
= new G4Tubs("tracker_tube",innerRadiusOfTheTube,
|
||||
outerRadiusOfTheTube,hightOfTheTube,
|
||||
startAngleOfTheTube,spanningAngleOfTheTube);
|
||||
G4LogicalVolume* tracker_log
|
||||
= new G4LogicalVolume(tracker_tube,Al,"tracker_log",0,0,0);
|
||||
G4double trackerPos_x = -1.0*m;
|
||||
G4double trackerPos_y = 0.*m;
|
||||
G4double trackerPos_z = 0.*m;
|
||||
G4VPhysicalVolume* tracker_phys
|
||||
= new G4PVPlacement(0,
|
||||
G4ThreeVector(trackerPos_x,trackerPos_y,trackerPos_z),
|
||||
tracker_log,"tracker",experimentalHall_log,false,0);
|
||||
|
||||
//------------------------------ a calorimeter block
|
||||
|
||||
G4double block_x = 1.0*m;
|
||||
G4double block_y = 50.0*cm;
|
||||
G4double block_z = 50.0*cm;
|
||||
G4Box* calorimeterBlock_box
|
||||
= new G4Box("calBlock_box",block_x,block_y,block_z);
|
||||
G4LogicalVolume* calorimeterBlock_log
|
||||
= new G4LogicalVolume(calorimeterBlock_box,Pb,"caloBlock_log",0,0,0);
|
||||
G4double blockPos_x = 1.0*m;
|
||||
G4double blockPos_y = 0.0*m;
|
||||
G4double blockPos_z = 0.0*m;
|
||||
G4VPhysicalVolume* calorimeterBlock_phys
|
||||
= new G4PVPlacement(0,
|
||||
G4ThreeVector(blockPos_x,blockPos_y,blockPos_z),
|
||||
calorimeterBlock_log,"caloBlock",experimentalHall_log,false,0);
|
||||
|
||||
//------------------------------ calorimeter layers
|
||||
|
||||
G4double calo_x = 1.*cm;
|
||||
G4double calo_y = 40.*cm;
|
||||
G4double calo_z = 40.*cm;
|
||||
G4Box* calorimeterLayer_box
|
||||
= new G4Box("caloLayer_box",calo_x,calo_y,calo_z);
|
||||
G4LogicalVolume* calorimeterLayer_log
|
||||
= new G4LogicalVolume(calorimeterLayer_box,Al,"caloLayer_log",0,0,0);
|
||||
for(G4int i=0;i<19;i++) // loop for 19 layers
|
||||
{
|
||||
G4double caloPos_x = (i-9)*10.*cm;
|
||||
G4double caloPos_y = 0.0*m;
|
||||
G4double caloPos_z = 0.0*m;
|
||||
G4VPhysicalVolume* calorimeterLayer_phys
|
||||
= new G4PVPlacement(0,
|
||||
G4ThreeVector(caloPos_x,caloPos_y,caloPos_z),
|
||||
calorimeterLayer_log,"caloLayer",calorimeterBlock_log,false,i);
|
||||
}
|
||||
|
||||
//------------------------------------------------------------------
|
||||
|
||||
return experimentalHall_phys;
|
||||
}
|
||||
|
||||
@@ -0,0 +1,63 @@
|
||||
// This code implementation is the intellectual property of
|
||||
// the RD44 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: ExN01PhysicsList.cc,v 1.1 1998/11/14 20:52:42 kurasige Exp $
|
||||
// GEANT4 tag $Name: geant4-00 $
|
||||
//
|
||||
//
|
||||
|
||||
#include "ExN01PhysicsList.hh"
|
||||
#include "G4ParticleTypes.hh"
|
||||
|
||||
|
||||
ExN01PhysicsList::ExN01PhysicsList()
|
||||
{;}
|
||||
|
||||
ExN01PhysicsList::~ExN01PhysicsList()
|
||||
{;}
|
||||
|
||||
void ExN01PhysicsList::ConstructParticle()
|
||||
{
|
||||
// In this method, static member functions should be called
|
||||
// for all particles which you want to use.
|
||||
// This ensures that objects of these particle types will be
|
||||
// created in the program.
|
||||
|
||||
G4Geantino::GeantinoDefinition();
|
||||
}
|
||||
|
||||
void ExN01PhysicsList::ConstructProcess()
|
||||
{
|
||||
// Define transportation process
|
||||
|
||||
AddTransportation();
|
||||
}
|
||||
|
||||
void ExN01PhysicsList::SetCuts(G4double cut)
|
||||
{
|
||||
// uppress error messages even in case e/gamma/proton do not exist
|
||||
G4int temp = GetVerboseLevel();
|
||||
SetVerboseLevel(0);
|
||||
|
||||
// set cut values for gamma at first and for e- second and next for e+,
|
||||
// because some processes for e+/e- need cut values for gamma
|
||||
SetCutValue(cut, "gamma");
|
||||
SetCutValue(cut, "e-");
|
||||
SetCutValue(cut, "e+");
|
||||
|
||||
// set cut values for proton and anti_proton before all other hadrons
|
||||
// because some processes for hadrons need cut values for proton/anti_proton
|
||||
SetCutValue(cut, "proton");
|
||||
SetCutValue(cut, "anti_proton");
|
||||
|
||||
// set a cut value to all particles
|
||||
|
||||
SetCutValueForOthers(cut);
|
||||
|
||||
SetVerboseLevel(temp);
|
||||
}
|
||||
|
||||
@@ -0,0 +1,55 @@
|
||||
// This code implementation is the intellectual property of
|
||||
// the RD44 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: ExN01PrimaryGeneratorAction.cc,v 1.1 1998/11/14 20:52:45 kurasige Exp $
|
||||
// GEANT4 tag $Name: geant4-00 $
|
||||
//
|
||||
|
||||
#include "ExN01PrimaryGeneratorAction.hh"
|
||||
|
||||
#include "G4Event.hh"
|
||||
#include "G4ParticleGun.hh"
|
||||
#include "G4UImanager.hh"
|
||||
#include "globals.hh"
|
||||
|
||||
ExN01PrimaryGeneratorAction::ExN01PrimaryGeneratorAction()
|
||||
{
|
||||
G4int n_particle = 1;
|
||||
particleGun = new G4ParticleGun(n_particle);
|
||||
|
||||
G4UImanager* UI = G4UImanager::GetUIpointer();
|
||||
UI->ApplyCommand("/gun/particle geantino");
|
||||
UI->ApplyCommand("/gun/energy 1.0 GeV");
|
||||
UI->ApplyCommand("/gun/position -2.0 0.0 0.0 m");
|
||||
}
|
||||
|
||||
ExN01PrimaryGeneratorAction::~ExN01PrimaryGeneratorAction()
|
||||
{
|
||||
delete particleGun;
|
||||
}
|
||||
|
||||
void ExN01PrimaryGeneratorAction::GeneratePrimaries(G4Event* anEvent)
|
||||
{
|
||||
G4UImanager* UI = G4UImanager::GetUIpointer();
|
||||
G4int i = anEvent->GetEventID() % 3;
|
||||
switch(i)
|
||||
{
|
||||
case 0:
|
||||
UI->ApplyCommand("/gun/direction 1.0 0.0 0.0");
|
||||
break;
|
||||
case 1:
|
||||
UI->ApplyCommand("/gun/direction 1.0 0.1 0.0");
|
||||
break;
|
||||
case 2:
|
||||
UI->ApplyCommand("/gun/direction 1.0 0.0 0.1");
|
||||
break;
|
||||
}
|
||||
|
||||
particleGun->GeneratePrimaryVertex(anEvent);
|
||||
}
|
||||
|
||||
|
||||
@@ -0,0 +1,17 @@
|
||||
# $Id: GNUmakefile,v 2.1 1998/07/02 15:26:52 gunter Exp $
|
||||
# --------------------------------------------------------------
|
||||
# GNUmakefile for examples module. Gabriele Cosmo, 06/04/98.
|
||||
# --------------------------------------------------------------
|
||||
|
||||
name := exampleN02
|
||||
G4TARGET := $(name)
|
||||
G4EXLIB := true
|
||||
|
||||
ifndef G4INSTALL
|
||||
G4INSTALL = ../../..
|
||||
endif
|
||||
|
||||
.PHONY: all
|
||||
all: lib bin
|
||||
|
||||
include $(G4INSTALL)/config/binmake.gmk
|
||||
@@ -0,0 +1,77 @@
|
||||
$Id: History,v 2.13 1998/12/08 16:37:28 allison Exp $
|
||||
-------------------------------------------------------------------
|
||||
|
||||
=========================================================
|
||||
Geant4 - an Object-Oriented Toolkit for Simulation in HEP
|
||||
=========================================================
|
||||
|
||||
Example N02 History file
|
||||
------------------------
|
||||
This file should be used by the G4 example coordinator to briefly
|
||||
summarize all major modifications introduced in the code and keep
|
||||
track of all tags.
|
||||
|
||||
----------------------------------------------------------
|
||||
* Reverse chronological order (last date on top), please *
|
||||
----------------------------------------------------------
|
||||
|
||||
4th December 1998 John Apostolakis
|
||||
|
||||
- corrected the Magnetic Field SetField methods
|
||||
- cosmetic change to the name of a volume (chamber), as it was too long.
|
||||
|
||||
12th Sptember 1998 Michel Maire
|
||||
- removed the function SetEmProcess() ( contained cin)
|
||||
and the class ExN02PhysicsListMessenger
|
||||
|
||||
Interchanged N02 and N03.
|
||||
|
||||
9th August 1998 John Allison
|
||||
- Removed trackerChamber_logVisAtt->SetForceWireframe(true);
|
||||
- Removed G4_SOLVE_TEMPLATES macros (now done in architecture.gmk).
|
||||
- Change G4UIterminal to G4UIGAG.
|
||||
|
||||
16th July 1998 John Allison
|
||||
- Changed /vis~/Draw... to /vis~/draw.
|
||||
|
||||
9th July 1998 John Allison
|
||||
- Added G4VIS_USE_DAWNFILE and G4VIS_USE_OPENGLWIN32 to ExN03VisManager.cc.
|
||||
|
||||
8th July 1998 G.Cosmo
|
||||
- Protected visualization code with G4VIS_USE.
|
||||
|
||||
6th July 1998 John Allison
|
||||
- Simplified ExN03VisManager.
|
||||
|
||||
June 29 , 98 H.Kurashige
|
||||
- Modified ExN03PhysicsList.
|
||||
|
||||
May 15, 98 G. Cosmo
|
||||
|
||||
- Added #ifdef protection to ExN03MagneticField.hh. Header now
|
||||
included explicitly in ExN03DetectorConstruction.hh. Example now
|
||||
links.
|
||||
|
||||
May 07, 98 J. Apostolakis
|
||||
|
||||
- Created Physical Volume Parameterisation for Tracker Chambers.
|
||||
- Copied from example6:
|
||||
MyTrackerHit into ExN03TrackerHit
|
||||
|
||||
May 05, 98 J. Apostolakis
|
||||
|
||||
- Changed the geometry in DetectorConstruction.
|
||||
- Created the Magnetic Field
|
||||
|
||||
May 01, 98 J. Apostolakis
|
||||
|
||||
- Files created by copying from exampleEmPhys2, renaming the files
|
||||
and the classes within them, changing the string "My" into
|
||||
|
||||
- Major changes made:
|
||||
* Event action: deleted energy counting.
|
||||
|
||||
|
||||
April 09, 98 G. Cosmo
|
||||
|
||||
- Created.
|
||||
@@ -0,0 +1,12 @@
|
||||
$Id: README,v 2.4 1998/10/09 14:27:35 japost Exp $
|
||||
-------------------------------------------------------------------
|
||||
|
||||
=========================================================
|
||||
Geant4 - an Object-Oriented Toolkit for Simulation in HEP
|
||||
=========================================================
|
||||
|
||||
ExampleN03
|
||||
----------
|
||||
|
||||
May 4, 1998 John Apostolakis.
|
||||
Started from exampleEmPhys2.
|
||||
@@ -0,0 +1,93 @@
|
||||
// This code implementation is the intellectual property of
|
||||
// the RD44 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: exampleN02.cc,v 2.11 1998/12/08 16:37:28 allison Exp $
|
||||
// GEANT4 tag $Name: geant4-00 $
|
||||
//
|
||||
//
|
||||
// --------------------------------------------------------------
|
||||
// GEANT 4 - exampleN03
|
||||
//
|
||||
// For information related to this code contact:
|
||||
// CERN, IT Division, ASD Group
|
||||
// --------------------------------------------------------------
|
||||
// Comments
|
||||
//
|
||||
//
|
||||
|
||||
#include "ExN02DetectorConstruction.hh"
|
||||
#include "ExN02PhysicsList.hh"
|
||||
#include "ExN02RunAction.hh"
|
||||
#include "ExN02PrimaryGeneratorAction.hh"
|
||||
#include "ExN02EventAction.hh"
|
||||
#include "ExN02SteppingAction.hh"
|
||||
|
||||
#include "G4UImanager.hh"
|
||||
#include "G4UIterminal.hh"
|
||||
|
||||
#include "G4RunManager.hh"
|
||||
#ifdef G4VIS_USE
|
||||
#include "ExN02VisManager.hh"
|
||||
#endif
|
||||
|
||||
#include "G4ios.hh"
|
||||
|
||||
|
||||
int
|
||||
main(int argc,char** argv) {
|
||||
|
||||
// Run manager
|
||||
G4RunManager * runManager = new G4RunManager;
|
||||
|
||||
// UserInitialization classes
|
||||
ExN02DetectorConstruction* ExN02detector = new ExN02DetectorConstruction;
|
||||
runManager->SetUserInitialization(ExN02detector);
|
||||
runManager->SetUserInitialization(new ExN02PhysicsList);
|
||||
|
||||
#ifdef G4VIS_USE
|
||||
// Visualization, if you choose to have it!
|
||||
G4VisManager* visManager = new ExN02VisManager;
|
||||
visManager->Initialize();
|
||||
#endif
|
||||
|
||||
// UserAction classes
|
||||
runManager->SetUserAction(new ExN02RunAction);
|
||||
runManager->SetUserAction(new ExN02PrimaryGeneratorAction(ExN02detector));
|
||||
|
||||
ExN02EventAction* eventAction = new ExN02EventAction;
|
||||
runManager->SetUserAction(eventAction);
|
||||
runManager->SetUserAction(new ExN02SteppingAction(ExN02detector,eventAction));
|
||||
|
||||
// User interactions
|
||||
G4UImanager * UI = G4UImanager::GetUIpointer();
|
||||
|
||||
if(argc==1)
|
||||
// Define (G)UI terminal for interactive mode
|
||||
{
|
||||
// G4UIterminal is a (dumb) terminal.
|
||||
G4UIsession * session = new G4UIterminal;
|
||||
UI->ApplyCommand("/control/execute prerun.g4mac");
|
||||
session->SessionStart();
|
||||
delete session;
|
||||
}
|
||||
else
|
||||
// Batch mode
|
||||
{
|
||||
G4String command = "/control/execute ";
|
||||
G4String fileName = argv[1];
|
||||
UI->ApplyCommand(command+fileName);
|
||||
}
|
||||
|
||||
#ifdef G4VIS_USE
|
||||
delete visManager;
|
||||
#endif
|
||||
delete runManager;
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
||||
|
||||
@@ -0,0 +1,15 @@
|
||||
/run/initialize
|
||||
/gun/position 0 0 -100
|
||||
/gun/direction 0 0 1
|
||||
/gun/energy 200 MeV
|
||||
|
||||
/tracking/verbose 1
|
||||
/gun/particle e+
|
||||
/run/beamOn 1
|
||||
|
||||
/run/beamOn 10
|
||||
|
||||
/tracking/verbose 0
|
||||
/run/beamOn 100
|
||||
# /run/beamOn 1000
|
||||
exit
|
||||
File diff suppressed because it is too large
Load Diff
@@ -0,0 +1,55 @@
|
||||
// This code implementation is the intellectual property of
|
||||
// the RD44 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: ExN02ChamberParameterisation.hh,v 1.2 1998/11/30 17:18:43 japost Exp $
|
||||
// GEANT4 tag $Name: geant4-00 $
|
||||
//
|
||||
//
|
||||
// A parameterisation that describes a series of boxes along Z
|
||||
// The boxes have equal width, & their lengths are a linear equation.
|
||||
// They are spaced an equal distance apart, starting from given location.
|
||||
//
|
||||
#ifndef ExN02ChamberParameterisation_H
|
||||
#define ExN02ChamberParameterisation_H 1
|
||||
|
||||
#include "globals.hh"
|
||||
#include "G4VPVParameterisation.hh"
|
||||
class G4VPhysicalVolume;
|
||||
class G4Box;
|
||||
|
||||
class ExN02ChamberParameterisation : public G4VPVParameterisation
|
||||
{
|
||||
public:
|
||||
ExN02ChamberParameterisation(G4int NoChambers,
|
||||
G4double startZ,
|
||||
G4double spacing,
|
||||
G4double widthChamber,
|
||||
G4double lengthInitial,
|
||||
G4double lengthFinal );
|
||||
~ExN02ChamberParameterisation();
|
||||
void ComputeTransformation
|
||||
(const G4int copyNo,G4VPhysicalVolume *physVol) const;
|
||||
void ComputeDimensions
|
||||
(G4Box & trackerLayer, const G4int copyNo,
|
||||
const G4VPhysicalVolume * physVol) const;
|
||||
|
||||
// Functions to get the parameters would be nice.
|
||||
// eg G4int GetNoChambers();
|
||||
|
||||
private:
|
||||
|
||||
G4int fNoChambers; //
|
||||
G4double fStartZ;
|
||||
G4double fHalfWidth; // The half-width of each tracker chamber
|
||||
G4double fSpacing; // The distance between the chambers' center
|
||||
G4double fHalfLengthFirst; // The first half-length
|
||||
G4double fHalfLengthIncr; // The Increment for the half-length
|
||||
};
|
||||
|
||||
#endif
|
||||
|
||||
|
||||
@@ -0,0 +1,77 @@
|
||||
// This code implementation is the intellectual property of
|
||||
// the RD44 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: ExN02DetectorConstruction.hh,v 1.3 1998/10/09 14:31:01 japost Exp $
|
||||
// GEANT4 tag $Name: geant4-00 $
|
||||
//
|
||||
//
|
||||
|
||||
#ifndef ExN02DetectorConstruction_h
|
||||
#define ExN02DetectorConstruction_h 1
|
||||
|
||||
#include "globals.hh"
|
||||
#include "G4VUserDetectorConstruction.hh"
|
||||
// class G4UniformMagField;
|
||||
#include "ExN02MagneticField.hh"
|
||||
|
||||
class G4Box;
|
||||
class G4LogicalVolume;
|
||||
class G4VPhysicalVolume;
|
||||
class G4Material;
|
||||
class ExN02DetectorMessenger;
|
||||
|
||||
class ExN02DetectorConstruction : public G4VUserDetectorConstruction
|
||||
{
|
||||
public:
|
||||
ExN02DetectorConstruction();
|
||||
~ExN02DetectorConstruction();
|
||||
|
||||
public:
|
||||
|
||||
G4VPhysicalVolume* Construct();
|
||||
|
||||
const G4VPhysicalVolume* GetTracker() {return physiTracker;};
|
||||
G4double GetTargetFullLength() {return fTargetLength;};
|
||||
G4double GetWorldFullLength() {return fWorldLength;};
|
||||
|
||||
void SetDetectorLength(G4double length);
|
||||
// void setMaterial(G4String val);
|
||||
void SetMagField(G4double val);
|
||||
private:
|
||||
|
||||
G4Box* solidWorld; //pointer to the solid enveloppe
|
||||
G4LogicalVolume* logicWorld; //pointer to the logical enveloppe
|
||||
G4VPhysicalVolume* physiWorld; //pointer to the physical enveloppe
|
||||
G4double fullSizeWorld; //full size of the enveloppe
|
||||
|
||||
G4Box* solidTracker; //pointer to the solid Tracker
|
||||
G4LogicalVolume* logicTracker; //pointer to the logical Tracker
|
||||
G4VPhysicalVolume* physiTracker; //pointer to the physical Tracker
|
||||
|
||||
G4Box* solidTarget; //pointer to the solid Target
|
||||
G4LogicalVolume* logicTarget; //pointer to the logical Target
|
||||
G4VPhysicalVolume* physiTarget; //pointer to the physical Target
|
||||
|
||||
G4Box* solidChamber; //pointer to the solid Chamber
|
||||
G4LogicalVolume* logicChamber; //pointer to the logical Chamber
|
||||
G4VPhysicalVolume* physiChamber; //pointer to the physical Chamber
|
||||
|
||||
G4Material* myMaterial; //pointer to the material
|
||||
ExN02MagneticField* fpMagField; //pointer to the mag field
|
||||
|
||||
ExN02DetectorMessenger* detectorMessenger; //pointer to the Messenger object
|
||||
G4double fWorldLength; // Full length of the world volume
|
||||
// Sizes of pieces of the detector
|
||||
G4double fDetectorLength; // Full length of the detector
|
||||
|
||||
G4double fTrackerLength; // Full length of Tracker
|
||||
G4double fTargetLength; // Full length of Target
|
||||
|
||||
};
|
||||
|
||||
#endif
|
||||
|
||||
@@ -0,0 +1,42 @@
|
||||
// This code implementation is the intellectual property of
|
||||
// the RD44 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: ExN02DetectorMessenger.hh,v 1.3 1998/10/09 14:31:02 japost Exp $
|
||||
// GEANT4 tag $Name: geant4-00 $
|
||||
//
|
||||
//
|
||||
|
||||
#ifndef ExN02DetectorMessenger_h
|
||||
#define ExN02DetectorMessenger_h 1
|
||||
|
||||
#include "globals.hh"
|
||||
#include "G4UImessenger.hh"
|
||||
|
||||
class ExN02DetectorConstruction;
|
||||
class G4UIdirectory;
|
||||
class G4UIcmdWithAString;
|
||||
class G4UIcmdWithADoubleAndUnit;
|
||||
|
||||
class ExN02DetectorMessenger: public G4UImessenger
|
||||
{
|
||||
public:
|
||||
ExN02DetectorMessenger(ExN02DetectorConstruction * myDet);
|
||||
~ExN02DetectorMessenger();
|
||||
|
||||
void SetNewValue(G4UIcommand * command,G4String newValues);
|
||||
|
||||
private:
|
||||
ExN02DetectorConstruction* myDetector;
|
||||
|
||||
G4UIdirectory* mydetDir;
|
||||
G4UIcmdWithAString* MatCmd;
|
||||
G4UIcmdWithADoubleAndUnit* SizeCmd;
|
||||
G4UIcmdWithADoubleAndUnit* FieldCmd;
|
||||
};
|
||||
|
||||
#endif
|
||||
|
||||
@@ -0,0 +1,36 @@
|
||||
// This code implementation is the intellectual property of
|
||||
// the RD44 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: ExN02EventAction.hh,v 1.3 1998/10/09 14:31:02 japost Exp $
|
||||
// GEANT4 tag $Name: geant4-00 $
|
||||
//
|
||||
//
|
||||
|
||||
#ifndef ExN02EventAction_h
|
||||
#define ExN02EventAction_h 1
|
||||
|
||||
#include "G4UserEventAction.hh"
|
||||
|
||||
class G4Event;
|
||||
|
||||
class ExN02EventAction : public G4UserEventAction
|
||||
{
|
||||
public:
|
||||
ExN02EventAction();
|
||||
~ExN02EventAction();
|
||||
|
||||
public:
|
||||
void BeginOfEventAction();
|
||||
void EndOfEventAction();
|
||||
|
||||
private:
|
||||
|
||||
};
|
||||
|
||||
#endif
|
||||
|
||||
|
||||
@@ -0,0 +1,46 @@
|
||||
// This code implementation is the intellectual property of
|
||||
// the RD44 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: ExN02MagneticField.hh,v 1.1 1998/10/09 14:31:03 japost Exp $
|
||||
// GEANT4 tag $Name: geant4-00 $
|
||||
//
|
||||
//
|
||||
// A class for control of the Magnetic Field of the detector.
|
||||
// The field is assumed to be uniform.
|
||||
//
|
||||
// $ Id: $
|
||||
|
||||
// Should this be a:
|
||||
// i) messenger
|
||||
// ii) user class that creates the field ?
|
||||
// iii) simply a derived class of Uniform field ? <== I have chosen this now.
|
||||
// iv) a field manager that creates/updates field (Prefered?)
|
||||
#ifndef ExN02MagneticField_H
|
||||
#define ExN02MagneticField_H
|
||||
|
||||
#include "G4UniformMagField.hh"
|
||||
class G4FieldManager;
|
||||
|
||||
class ExN02MagneticField: public G4UniformMagField
|
||||
{
|
||||
public:
|
||||
ExN02MagneticField(G4ThreeVector); // The value of the field
|
||||
ExN02MagneticField(); // A zero field
|
||||
~ExN02MagneticField();
|
||||
|
||||
// Set the field to (0, 0, fieldValue)
|
||||
void SetFieldValue(G4ThreeVector fieldVector);
|
||||
void SetFieldValue(G4double fieldValue);
|
||||
G4ThreeVector GetConstantFieldValue();
|
||||
|
||||
protected:
|
||||
|
||||
// Find the global Field Manager
|
||||
G4FieldManager* GetGlobalFieldManager(); // static
|
||||
};
|
||||
|
||||
#endif
|
||||
@@ -0,0 +1,88 @@
|
||||
// This code implementation is the intellectual property of
|
||||
// the RD44 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: ExN02PhysicsList.hh,v 1.4 1998/10/09 14:31:03 japost Exp $
|
||||
// GEANT4 tag $Name: geant4-00 $
|
||||
//
|
||||
//
|
||||
// ------------------------------------------------------------
|
||||
// GEANT 4 class header file
|
||||
//
|
||||
// This class is a class derived from G4VUserPhysicsList
|
||||
// for constructing all particles and processes.
|
||||
//
|
||||
// History
|
||||
// first version 10 Jan. 1998 by H.Kurashige
|
||||
// ------------------------------------------------------------
|
||||
#ifndef ExN02PhysicsList_h
|
||||
#define ExN02PhysicsList_h 1
|
||||
|
||||
#include "G4VUserPhysicsList.hh"
|
||||
#include "globals.hh"
|
||||
|
||||
class G4PhotoElectricEffect;
|
||||
class G4ComptonScattering;
|
||||
class G4GammaConversion;
|
||||
|
||||
class G4MultipleScattering;
|
||||
|
||||
class G4eIonisation;
|
||||
class G4eBremsstrahlung;
|
||||
class G4eplusAnnihilation;
|
||||
|
||||
class G4MuIonisation;
|
||||
class G4MuBremsstrahlung;
|
||||
class G4MuPairProduction;
|
||||
|
||||
class G4hIonisation;
|
||||
|
||||
class ExN02PhysicsList: public G4VUserPhysicsList
|
||||
{
|
||||
public:
|
||||
ExN02PhysicsList();
|
||||
virtual ~ExN02PhysicsList();
|
||||
|
||||
protected:
|
||||
// Construct particle and physics
|
||||
virtual void ConstructParticle();
|
||||
virtual void ConstructProcess();
|
||||
|
||||
//
|
||||
virtual void SetCuts(G4double aCut);
|
||||
|
||||
protected:
|
||||
// these methods Construct particles
|
||||
virtual void ConstructBosons();
|
||||
virtual void ConstructLeptons();
|
||||
virtual void ConstructMesons();
|
||||
virtual void ConstructBarions();
|
||||
|
||||
protected:
|
||||
// these methods Construct physics processes and register them
|
||||
virtual void ConstructGeneral();
|
||||
virtual void ConstructEM();
|
||||
|
||||
private:
|
||||
|
||||
G4PhotoElectricEffect* thePhotoElectricEffect;
|
||||
G4ComptonScattering* theComptonScattering;
|
||||
G4GammaConversion* theGammaConversion;
|
||||
|
||||
G4MultipleScattering* theeminusMultipleScattering;
|
||||
G4eIonisation* theeminusIonisation;
|
||||
G4eBremsstrahlung* theeminusBremsstrahlung;
|
||||
|
||||
G4MultipleScattering* theeplusMultipleScattering;
|
||||
G4eIonisation* theeplusIonisation;
|
||||
G4eBremsstrahlung* theeplusBremsstrahlung;
|
||||
G4eplusAnnihilation* theeplusAnnihilation;
|
||||
};
|
||||
|
||||
#endif
|
||||
|
||||
|
||||
|
||||
@@ -0,0 +1,44 @@
|
||||
// This code implementation is the intellectual property of
|
||||
// the RD44 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: ExN02PrimaryGeneratorAction.hh,v 1.3 1998/10/09 14:31:04 japost Exp $
|
||||
// GEANT4 tag $Name: geant4-00 $
|
||||
//
|
||||
//
|
||||
|
||||
#ifndef ExN02PrimaryGeneratorAction_h
|
||||
#define ExN02PrimaryGeneratorAction_h 1
|
||||
|
||||
#include "G4VUserPrimaryGeneratorAction.hh"
|
||||
#include "globals.hh"
|
||||
|
||||
class ExN02DetectorConstruction;
|
||||
class G4ParticleGun;
|
||||
class G4Event;
|
||||
class ExN02PrimaryGeneratorMessenger;
|
||||
|
||||
class ExN02PrimaryGeneratorAction : public G4VUserPrimaryGeneratorAction
|
||||
{
|
||||
public:
|
||||
ExN02PrimaryGeneratorAction(ExN02DetectorConstruction* myDC);
|
||||
~ExN02PrimaryGeneratorAction();
|
||||
|
||||
public:
|
||||
void GeneratePrimaries(G4Event* anEvent);
|
||||
void SetRndmFlag(G4String val) { rndmFlag = val;}
|
||||
|
||||
private:
|
||||
G4ParticleGun* particleGun;
|
||||
ExN02DetectorConstruction* myDetector;
|
||||
|
||||
ExN02PrimaryGeneratorMessenger* gunMessenger;
|
||||
G4String rndmFlag;
|
||||
};
|
||||
|
||||
#endif
|
||||
|
||||
|
||||
@@ -0,0 +1,37 @@
|
||||
// This code implementation is the intellectual property of
|
||||
// the RD44 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: ExN02PrimaryGeneratorMessenger.hh,v 1.3 1998/10/09 14:31:05 japost Exp $
|
||||
// GEANT4 tag $Name: geant4-00 $
|
||||
//
|
||||
//
|
||||
|
||||
#ifndef ExN02PrimaryGeneratorMessenger_h
|
||||
#define ExN02PrimaryGeneratorMessenger_h 1
|
||||
|
||||
#include "globals.hh"
|
||||
#include "G4UImessenger.hh"
|
||||
|
||||
class ExN02PrimaryGeneratorAction;
|
||||
class G4UIcmdWithAString;
|
||||
|
||||
class ExN02PrimaryGeneratorMessenger: public G4UImessenger
|
||||
{
|
||||
public:
|
||||
ExN02PrimaryGeneratorMessenger(ExN02PrimaryGeneratorAction* myGun);
|
||||
~ExN02PrimaryGeneratorMessenger();
|
||||
|
||||
void SetNewValue(G4UIcommand * command,G4String newValues);
|
||||
|
||||
private:
|
||||
ExN02PrimaryGeneratorAction* myAction;
|
||||
|
||||
G4UIcmdWithAString* RndmCmd;
|
||||
};
|
||||
|
||||
#endif
|
||||
|
||||
@@ -0,0 +1,36 @@
|
||||
// This code implementation is the intellectual property of
|
||||
// the RD44 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: ExN02RunAction.hh,v 1.3 1998/10/09 14:31:06 japost Exp $
|
||||
// GEANT4 tag $Name: geant4-00 $
|
||||
//
|
||||
//
|
||||
|
||||
#ifndef ExN02RunAction_h
|
||||
#define ExN02RunAction_h 1
|
||||
|
||||
#include "G4UserRunAction.hh"
|
||||
#include "globals.hh"
|
||||
|
||||
class G4Run;
|
||||
|
||||
class ExN02RunAction : public G4UserRunAction
|
||||
{
|
||||
public:
|
||||
ExN02RunAction();
|
||||
~ExN02RunAction();
|
||||
|
||||
public:
|
||||
void BeginOfRunAction(G4Run* aRun);
|
||||
void EndOfRunAction(G4Run* aRun);
|
||||
|
||||
private:
|
||||
G4int runIDcounter;
|
||||
};
|
||||
|
||||
#endif
|
||||
|
||||
@@ -0,0 +1,35 @@
|
||||
// This code implementation is the intellectual property of
|
||||
// the RD44 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: ExN02SteppingAction.hh,v 1.3 1998/10/09 14:31:06 japost Exp $
|
||||
// GEANT4 tag $Name: geant4-00 $
|
||||
//
|
||||
//
|
||||
|
||||
#ifndef ExN02SteppingAction_h
|
||||
#define ExN02SteppingAction_h 1
|
||||
|
||||
#include "G4UserSteppingAction.hh"
|
||||
#include "globals.hh"
|
||||
|
||||
class ExN02DetectorConstruction;
|
||||
class ExN02EventAction;
|
||||
|
||||
class ExN02SteppingAction : public G4UserSteppingAction
|
||||
{
|
||||
public:
|
||||
ExN02SteppingAction(ExN02DetectorConstruction* myDC,ExN02EventAction* myEA);
|
||||
~ExN02SteppingAction(){};
|
||||
|
||||
void UserSteppingAction();
|
||||
|
||||
private:
|
||||
ExN02DetectorConstruction* myDetector;
|
||||
ExN02EventAction* eventAction;
|
||||
};
|
||||
|
||||
#endif
|
||||
@@ -0,0 +1,71 @@
|
||||
// This code implementation is the intellectual property of
|
||||
// the RD44 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: ExN02TrackerHit.hh,v 1.1 1998/10/09 14:31:07 japost Exp $
|
||||
// GEANT4 tag $Name: geant4-00 $
|
||||
//
|
||||
|
||||
#ifndef ExN02TrackerHit_h
|
||||
#define ExN02TrackerHit_h 1
|
||||
|
||||
#include "G4VHit.hh"
|
||||
#include "G4THitsCollection.hh"
|
||||
#include "G4Allocator.hh"
|
||||
#include "G4ThreeVector.hh"
|
||||
|
||||
class ExN02TrackerHit : public G4VHit
|
||||
{
|
||||
public:
|
||||
|
||||
ExN02TrackerHit();
|
||||
~ExN02TrackerHit();
|
||||
ExN02TrackerHit(const ExN02TrackerHit &right);
|
||||
const ExN02TrackerHit& operator=(const ExN02TrackerHit &right);
|
||||
int operator==(const ExN02TrackerHit &right) const;
|
||||
|
||||
|
||||
inline void *operator new(size_t);
|
||||
inline void operator delete(void *aHit);
|
||||
|
||||
void Draw();
|
||||
void Print();
|
||||
|
||||
private:
|
||||
G4double edep;
|
||||
G4ThreeVector pos;
|
||||
|
||||
public:
|
||||
inline void SetEdep(G4double de)
|
||||
{ edep = de; };
|
||||
inline G4double GetEdep()
|
||||
{ return edep; };
|
||||
inline void SetPos(G4ThreeVector xyz)
|
||||
{ pos = xyz; };
|
||||
inline G4ThreeVector GetPos()
|
||||
{ return pos; };
|
||||
|
||||
};
|
||||
|
||||
typedef G4THitsCollection<ExN02TrackerHit> ExN02TrackerHitsCollection;
|
||||
|
||||
extern G4Allocator<ExN02TrackerHit> ExN02TrackerHitAllocator;
|
||||
|
||||
inline void* ExN02TrackerHit::operator new(size_t)
|
||||
{
|
||||
void *aHit;
|
||||
aHit = (void *) ExN02TrackerHitAllocator.MallocSingle();
|
||||
return aHit;
|
||||
}
|
||||
|
||||
inline void ExN02TrackerHit::operator delete(void *aHit)
|
||||
{
|
||||
ExN02TrackerHitAllocator.FreeSingle((ExN02TrackerHit*) aHit);
|
||||
}
|
||||
|
||||
#endif
|
||||
|
||||
|
||||
@@ -0,0 +1,44 @@
|
||||
// This code implementation is the intellectual property of
|
||||
// the RD44 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: ExN02TrackerSD.hh,v 1.1 1998/10/09 14:31:08 japost Exp $
|
||||
// GEANT4 tag $Name: geant4-00 $
|
||||
//
|
||||
|
||||
#ifndef ExN02TrackerSD_h
|
||||
#define ExN02TrackerSD_h 1
|
||||
|
||||
#include "G4VSensitiveDetector.hh"
|
||||
#include "G4ThreeVector.hh"
|
||||
#include "ExN02TrackerHit.hh"
|
||||
class G4Step;
|
||||
class G4HCofThisEvent;
|
||||
|
||||
class ExN02TrackerSD : public G4VSensitiveDetector
|
||||
{
|
||||
|
||||
public:
|
||||
ExN02TrackerSD(G4String name);
|
||||
~ExN02TrackerSD();
|
||||
|
||||
void Initialize(G4HCofThisEvent*HCE);
|
||||
G4bool ProcessHits(G4Step*aStep,G4TouchableHistory*ROhist);
|
||||
void EndOfEvent(G4HCofThisEvent*HCE);
|
||||
void clear();
|
||||
void DrawAll();
|
||||
void PrintAll();
|
||||
|
||||
private:
|
||||
ExN02TrackerHitsCollection *trackerCollection;
|
||||
|
||||
};
|
||||
|
||||
|
||||
|
||||
|
||||
#endif
|
||||
|
||||
@@ -0,0 +1,50 @@
|
||||
// This code implementation is the intellectual property of
|
||||
// the RD44 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: ExN02VisManager.hh,v 1.3 1998/10/09 14:31:09 japost Exp $
|
||||
// GEANT4 tag $Name: geant4-00 $
|
||||
//
|
||||
//
|
||||
|
||||
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo....
|
||||
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo....
|
||||
|
||||
// Example Visualization Manager implementing virtual function
|
||||
// RegisterGraphicsSystems. Exploits C-pre-processor variables
|
||||
// G4VIS_USE_DAWN, etc., which are set by the GNUmakefiles if
|
||||
// environment variables of the same name are set.
|
||||
|
||||
// So all you have to do is set environment variables and compile and
|
||||
// instantiate this in your main().
|
||||
|
||||
// Alternatively, you can implement an empty function here and just
|
||||
// register the systems you want in your main(), e.g.:
|
||||
// G4VisManager* myVisManager = new MyVisManager;
|
||||
// myVisManager -> RegisterGraphicsSystem (new MyGraphicsSystem);
|
||||
|
||||
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo....
|
||||
|
||||
#ifndef ExN02VisManager_h
|
||||
#define ExN02VisManager_h 1
|
||||
|
||||
#include "G4VisManager.hh"
|
||||
|
||||
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo....
|
||||
|
||||
class ExN02VisManager: public G4VisManager {
|
||||
|
||||
public:
|
||||
|
||||
ExN02VisManager ();
|
||||
|
||||
private:
|
||||
|
||||
void RegisterGraphicsSystems ();
|
||||
|
||||
};
|
||||
|
||||
#endif
|
||||
@@ -0,0 +1,4 @@
|
||||
/control/verbose 2
|
||||
/tracking/verbose 2
|
||||
/tracking/verbose 1
|
||||
/run/initialize
|
||||
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user