Import Geant4 0.0.0 source tree

This commit is contained in:
Gabriele Cosmo
2016-06-01 15:25:35 +02:00
parent 54d6b71f95
commit b97f8d0df7
3237 changed files with 807095 additions and 0 deletions
+23
View File
@@ -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
+97
View File
@@ -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.
+25
View File
@@ -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.
+23
View File
@@ -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
+10
View File
@@ -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
-----------------
+35
View File
@@ -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
+42
View File
@@ -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.
+47
View File
@@ -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
+31
View File
@@ -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;
}
+175
View File
@@ -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);
}
+53
View File
@@ -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)
+52
View File
@@ -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.
+136
View File
@@ -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.
--
+64
View File
@@ -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;
}
+18
View File
@@ -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
+112
View File
@@ -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
+42
View File
@@ -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
+22
View File
@@ -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()
{
}
+17
View File
@@ -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
+32
View File
@@ -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.
+19
View File
@@ -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.
+52
View 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;
}
+2
View File
@@ -0,0 +1,2 @@
G4Axis2PlacementsCreator default constructor calling G4GeometryTable::RegisterObject(this)
G4Axis2PlacementsCreator default constructor calling G4GeometryTable::RegisterObject(this)
+15
View File
@@ -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
View File
@@ -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);
}
+37
View File
@@ -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
+41
View File
@@ -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";
+23
View File
@@ -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
+17
View File
@@ -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
+37
View File
@@ -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
+23
View File
@@ -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.
+57
View File
@@ -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.
+61
View File
@@ -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;
}
View File
View File
+192
View File
@@ -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);
}
+17
View File
@@ -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
+77
View File
@@ -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.
+12
View File
@@ -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.
+93
View File
@@ -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;
}
View File
+15
View File
@@ -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
+4
View File
@@ -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