Import Geant4 1.0.0 source tree
This commit is contained in:
+73
-1
@@ -1,4 +1,4 @@
|
||||
$Id: History,v 1.16 1999/07/06 18:15:39 johna Exp $
|
||||
$Id: History,v 1.37 1999/12/07 11:33:51 stesting Exp $
|
||||
-------------------------------------------------------------------
|
||||
|
||||
=========================================================
|
||||
@@ -17,6 +17,78 @@ committal in the CVS repository !
|
||||
* Reverse chronological order (last date on top), please *
|
||||
----------------------------------------------------------
|
||||
|
||||
7th December 1999 John Allison (examples-V00-01-19)
|
||||
- Updated novice .out files to geant4-01-00.
|
||||
|
||||
6th December 1999 John Allison (examples-V00-01-18)
|
||||
- Temporarily backed muon out of exampleN02.
|
||||
- Included PersistentEx01-V00-01-05, PersistentEx02-V00-01-03.
|
||||
|
||||
3rd December 1999 Gabriele Cosmo (examples-V00-01-17)
|
||||
- Fixed definition of vacuum in exampleN02 and updated reference
|
||||
output as for Linux-g++ (J.Apostolakis)
|
||||
- Included PersistentEx01-V00-01-04, PersistentEx02-V00-01-02.
|
||||
|
||||
1st December 1999 John Allison (examples-V00-01-16)
|
||||
- Added 1 Tev muon to exampleN02 (J.Apostolakis).
|
||||
- Included PersistentEx01-V00-01-03, PersistentEx02-V00-01-01.
|
||||
|
||||
29th November 1999 John Allison (examples-V00-01-15)
|
||||
- Delete VisManager before RunManager in exampleN05.cc
|
||||
|
||||
17th November 1999 John Allison (examples-V00-01-14)
|
||||
- Updated exampleN03.out and exampleN06.out for geant4-00-01-ref-09 and
|
||||
Sun debug.
|
||||
|
||||
10th November 1999 John Allison (examples-V00-01-13)
|
||||
- Archived (cvs remove) E01, E02 and E03.
|
||||
- Added extended/electromagnetic and extended/persistency.
|
||||
|
||||
10th November 1999 Satoshi Tanaka (examples-V00-01-12)
|
||||
- novice/N03 is updated
|
||||
- Vis macros for N03 are updated for the latest updation of vis commands
|
||||
(Introduction of /vis/viewer/update etc)
|
||||
|
||||
09th November 1999 Satoshi Tanaka (examples-V00-01-11)
|
||||
- novice/N03 is updated
|
||||
- prerunN03.mac : /vis/viewer/update is appended
|
||||
- src/ExN03RunAction.cc: /vis/scene/notifyHandlers is in BeginOfRunAction()
|
||||
/vis/viewer/update is in EndOfRunAction()
|
||||
|
||||
29th September 1999 John Allison (examples-V00-01-09)
|
||||
- Updated .out files for geant4-00-01-ref-05, tags 11.
|
||||
|
||||
29th September 1999 John Allison (examples-V00-01-08)
|
||||
- Updated exampleN04 .out files for geant4-00-01-ref-05.
|
||||
|
||||
26th October 1999 John Allison (examples-V00-01-07)
|
||||
- Tagged Y.Morita's changes to extended/E02 - see extended/E02/History.
|
||||
|
||||
20th October 1999 John Allison (examples-V00-01-06)
|
||||
- Define G4OODDLX_BOOT in E02/GNUmakefile.
|
||||
- Updated .out files for geant4-00-01-ref-04.
|
||||
|
||||
29th September 1999 John Allison (examples-V00-01-05)
|
||||
- Updated .out files for geant4-00-01-ref-03.
|
||||
|
||||
3rd October 1999 Hisaya Kurashige (examples-V00-01-04)
|
||||
- Updated all PhysicsList for renaming 'Barion' to 'Baryon'
|
||||
|
||||
29th September 1999 John Allison (examples-V00-01-03)
|
||||
- Updated .out files for geant4-00-01-ref-02.
|
||||
|
||||
14th September 1999 Satoshi Tanaka (examples-V00-01-02)
|
||||
- Included new macro files and other changes for visualization.
|
||||
|
||||
5th August 1999 John Allison (examples-V00-01-01)
|
||||
- Updated exampleN02.out for geant4-00-01-ref-01.
|
||||
|
||||
5th August 1999 John Allison (examples-V00-01-00)
|
||||
- Updated exampleN04.EMtest.out and exampleN04.out for geant4-00-01.
|
||||
|
||||
4th August 1999 John Allison
|
||||
- Eliminated references to G4Ray in ExN02VisManager.cc and N03.
|
||||
|
||||
6th July 1999 John Allison (examples-01-00-13)
|
||||
- Relaxed non-optimised compiling for ExN04PhysicsList.cc for Linux.
|
||||
|
||||
|
||||
@@ -1,35 +0,0 @@
|
||||
# $Id: GNUmakefile,v 1.1 1999/01/07 16:05:17 gunter 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
|
||||
|
||||
@@ -1,46 +0,0 @@
|
||||
$Id: History,v 1.2 1999/04/17 04:06:40 kurasige 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 *
|
||||
----------------------------------------------------------
|
||||
17 Apr., 1999 H.Kurashige
|
||||
- Modify SetCuts() and ConstructParticle() in ExE0101PhysicsList
|
||||
- Modify BeginOfRunAction() and EndOfRunAction() in ExE0101RunAction
|
||||
- Modify UserSteppingAction() in ExE0101SteppingAction
|
||||
|
||||
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.
|
||||
|
||||
@@ -1,47 +0,0 @@
|
||||
$Id: README,v 1.1 1999/01/07 16:05:17 gunter 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
|
||||
|
||||
@@ -1,31 +0,0 @@
|
||||
// $Id: exampleE01.cc,v 1.1 1999/01/07 16:05:17 gunter 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;
|
||||
}
|
||||
@@ -1,175 +0,0 @@
|
||||
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
|
||||
@@ -1,34 +0,0 @@
|
||||
|
||||
#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
|
||||
|
||||
@@ -1,37 +0,0 @@
|
||||
// $Id: ExE01PhysicsList.hh,v 1.2 1999/04/17 04:06:41 kurasige 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();
|
||||
|
||||
protected:
|
||||
// these methods Construct particles
|
||||
virtual void ConstructBosons();
|
||||
virtual void ConstructLeptons();
|
||||
|
||||
protected:
|
||||
// these methods Construct physics processes and register them
|
||||
virtual void ConstructEM();
|
||||
|
||||
};
|
||||
|
||||
#endif
|
||||
|
||||
|
||||
|
||||
@@ -1,25 +0,0 @@
|
||||
|
||||
#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
|
||||
|
||||
|
||||
@@ -1,33 +0,0 @@
|
||||
// $Id: ExE01RunAction.hh,v 1.3 1999/04/22 21:49:17 asaim 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() { }
|
||||
virtual ~ExE01RunAction() {}
|
||||
|
||||
virtual void BeginOfRunAction(const G4Run* aRun);
|
||||
virtual void EndOfRunAction(const G4Run* aRun);
|
||||
|
||||
static HepRef(Histo1D) get_1d() { return myHisto1D; }
|
||||
static HepRef(Histo2D) Get2d() { return myHisto2D; }
|
||||
|
||||
private:
|
||||
static HepRef(Histo1D) myHisto1D;
|
||||
static HepRef(Histo2D) myHisto2D;
|
||||
|
||||
HepDbApplication dbApp;
|
||||
};
|
||||
|
||||
#endif
|
||||
|
||||
@@ -1,24 +0,0 @@
|
||||
// $Id: ExE01SteppingAction.hh,v 1.2 1999/04/17 04:06:43 kurasige 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(){};
|
||||
virtual ~ExE01SteppingAction(){};
|
||||
|
||||
virtual void UserSteppingAction(const G4Step*);
|
||||
};
|
||||
|
||||
#endif
|
||||
@@ -1,102 +0,0 @@
|
||||
|
||||
#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;
|
||||
}
|
||||
|
||||
@@ -1,130 +0,0 @@
|
||||
// $Id: ExE01PhysicsList.cc,v 1.2 1999/04/17 04:06:46 kurasige 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 = defaultCutValue;
|
||||
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();
|
||||
}
|
||||
}
|
||||
@@ -1,36 +0,0 @@
|
||||
|
||||
#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);
|
||||
}
|
||||
|
||||
|
||||
@@ -1,49 +0,0 @@
|
||||
// $Id: ExE01RunAction.cc,v 1.3 1999/04/22 21:49:21 asaim Exp $
|
||||
|
||||
#include "ExE01RunAction.hh"
|
||||
#include "G4Run.hh"
|
||||
#include "G4UImanager.hh"
|
||||
#include "G4ios.hh"
|
||||
|
||||
HepRef(Histo1D) ExE01RunAction::myHisto1D;
|
||||
HepRef(Histo2D) ExE01RunAction::myHisto2D;
|
||||
|
||||
void ExE01RunAction::BeginOfRunAction(const G4Run* aRun)
|
||||
{
|
||||
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(const G4Run*)
|
||||
{
|
||||
// Print histograms
|
||||
HistPrintout p(G4cout);
|
||||
|
||||
p.print(*myHisto1D);
|
||||
p.print(*myHisto2D);
|
||||
|
||||
// commit changes to Objectivty database
|
||||
dbApp.commit();
|
||||
}
|
||||
|
||||
|
||||
@@ -1,22 +0,0 @@
|
||||
// $Id: ExE01SteppingAction.cc,v 1.2 1999/04/17 04:06:49 kurasige Exp $
|
||||
|
||||
#include "ExE01SteppingAction.hh"
|
||||
#include "ExE01RunAction.hh"
|
||||
|
||||
void ExE01SteppingAction::UserSteppingAction(const G4Step*){
|
||||
|
||||
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);
|
||||
}
|
||||
|
||||
|
||||
@@ -1,53 +0,0 @@
|
||||
# $Id: GNUmakefile,v 1.1 1999/01/07 16:05:20 gunter 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)
|
||||
|
||||
@@ -1,151 +0,0 @@
|
||||
$Id: README,v 1.2 1999/04/29 09:04:55 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. The code is provided here to give just a brief idea
|
||||
of using the persistency in Geant4.
|
||||
|
||||
How to build:
|
||||
|
||||
- Setup:
|
||||
|
||||
In addition to the standard Geant4 setup, additional setup for
|
||||
HepODBMS, Objectivity/DB and federated database 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}/examples/extended/E02/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 is a set of configuration file and baseline federated database
|
||||
file which contain 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 federeated database.
|
||||
|
||||
When creating a persistency library of Geant4, Geant4-specific persistent
|
||||
classes will be compiled into your local copy of the boot file.
|
||||
|
||||
Default location of the Geant4 boot file is $HOME/G4EXAMPLE.
|
||||
You may want to change the definition of this temporary boot
|
||||
file in your .cshrc.
|
||||
|
||||
example:
|
||||
setenv G4EXAMPLE_BOOT_DIR ${HOME}/tmp/G4EXAMPLE
|
||||
setenv G4EXAMPLE_BOOT ${G4EXAMPLE_BOOT_DIR}/G4EXAMPLE
|
||||
|
||||
For each boot file, you 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
|
||||
|
||||
To compile the schema and to build the library, you also need an
|
||||
access to Objectivity/DB lock server. 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 local copy of Geant4 boot file.
|
||||
___________________________________________________________________________
|
||||
Note: On CERN AFS, contact your group system administrator to obtain access
|
||||
to your group lock server. If you want to run this example on your
|
||||
own, you must run your own lock server process on the same machine as
|
||||
you run the executable program, due to a technical limitation on AFS
|
||||
and Objectivity.
|
||||
|
||||
To start your own lock server process,
|
||||
|
||||
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>
|
||||
|
||||
You must have AFS ACL access to HepODBMS and Objectivity/DB
|
||||
directories.
|
||||
|
||||
At CERN, the FDID allocation table is given in this URL:
|
||||
|
||||
http://wwwinfo.cern.ch/asd/rd45/white-papers/9804/FDIDAllocation.html
|
||||
___________________________________________________________________________
|
||||
|
||||
- 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 by ootoolmgr as
|
||||
a "transaction", and the further updates to the database will be blocked.
|
||||
|
||||
--
|
||||
@@ -1,64 +0,0 @@
|
||||
// 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.1 1999/01/07 16:05:21 gunter Exp $
|
||||
// GEANT4 tag $Name: geant4-00-01 $
|
||||
//
|
||||
//
|
||||
// --------------------------------------------------------------
|
||||
// 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;
|
||||
}
|
||||
|
||||
@@ -1,18 +0,0 @@
|
||||
#
|
||||
# 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
|
||||
@@ -1,112 +0,0 @@
|
||||
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
|
||||
@@ -1,43 +0,0 @@
|
||||
#! /bin/csh -f
|
||||
|
||||
# setup some variables (example on CERN AFS SUN-CC)
|
||||
|
||||
set CWD = `pwd`
|
||||
set G4ROOT = ${CWD}/../../..
|
||||
set G4BIN = ${G4ROOT}/bin/SUN-CC
|
||||
set G4SCHEMA_DIR = ${G4ROOT}/schema
|
||||
|
||||
# check some configurations
|
||||
|
||||
if ( ! $?G4EXAMPLE_FDID ) then
|
||||
echo "G4EXAMPLE_FDID is not defined. Stop."
|
||||
exit 2
|
||||
endif
|
||||
|
||||
if ( ! $?G4EXAMPLE_BOOT ) then
|
||||
echo "G4EXAMPLE_BOOT is not defined. Stop."
|
||||
exit 2
|
||||
endif
|
||||
|
||||
if ( ! -e $G4EXAMPLE_BOOT ) then
|
||||
echo "G4EXAMPLE_BOOT is not found. Run "gmake cleandb" first."
|
||||
exit 2
|
||||
endif
|
||||
|
||||
# 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
|
||||
@@ -1,20 +0,0 @@
|
||||
|
||||
#ifndef ExE02DetectorConstruction_h
|
||||
#define ExE02DetectorConstruction_h 1
|
||||
|
||||
#include "G4VUserDetectorConstruction.hh"
|
||||
#include "globals.hh"
|
||||
|
||||
class ExE02DetectorConstruction : public G4VUserDetectorConstruction
|
||||
{
|
||||
public:
|
||||
ExE02DetectorConstruction();
|
||||
~ExE02DetectorConstruction();
|
||||
|
||||
public:
|
||||
G4VPhysicalVolume* Construct();
|
||||
|
||||
};
|
||||
|
||||
#endif
|
||||
|
||||
@@ -1,25 +0,0 @@
|
||||
|
||||
#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
|
||||
|
||||
|
||||
@@ -1,60 +0,0 @@
|
||||
|
||||
#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
|
||||
|
||||
|
||||
@@ -1,30 +0,0 @@
|
||||
|
||||
#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
|
||||
|
||||
@@ -1,53 +0,0 @@
|
||||
|
||||
#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(const G4Event* )
|
||||
{
|
||||
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)
|
||||
{
|
||||
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;
|
||||
}
|
||||
|
||||
|
||||
|
||||
@@ -1,38 +0,0 @@
|
||||
|
||||
#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()
|
||||
{
|
||||
}
|
||||
|
||||
|
||||
@@ -1,17 +0,0 @@
|
||||
# $Id: GNUmakefile,v 1.1 1999/01/07 16:05:24 gunter 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
|
||||
@@ -1,35 +0,0 @@
|
||||
$Id: History,v 1.2 1999/04/17 05:27:10 kurasige Exp $
|
||||
-------------------------------------------------------------------
|
||||
|
||||
=========================================================
|
||||
Geant4 - an Object-Oriented Toolkit for Simulation in HEP
|
||||
=========================================================
|
||||
|
||||
Extended Example 03 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 *
|
||||
----------------------------------------------------------
|
||||
17 Apr., 1999 H.Kurashige
|
||||
- Modify SetCuts() and ConstructParticle() in ExE03PhysicsList
|
||||
- Modify BeginOfRunAction() and EndOfRunAction() in ExE03RunAction
|
||||
|
||||
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.
|
||||
|
||||
@@ -1,19 +0,0 @@
|
||||
$Id: README,v 1.1 1999/01/07 16:05:25 gunter 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.
|
||||
|
||||
|
||||
@@ -1,52 +0,0 @@
|
||||
// $Id: exampleE03.cc,v 1.1 1999/01/07 16:05:25 gunter 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;
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
@@ -1,2 +0,0 @@
|
||||
G4Axis2PlacementsCreator default constructor calling G4GeometryTable::RegisterObject(this)
|
||||
G4Axis2PlacementsCreator default constructor calling G4GeometryTable::RegisterObject(this)
|
||||
@@ -1,15 +0,0 @@
|
||||
/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
@@ -1,42 +0,0 @@
|
||||
|
||||
#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
|
||||
|
||||
@@ -1,25 +0,0 @@
|
||||
|
||||
#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
|
||||
|
||||
|
||||
@@ -1,33 +0,0 @@
|
||||
|
||||
#ifndef ExE03RunAction_h
|
||||
#define ExE03RunAction_h 1
|
||||
|
||||
#include "G4UserRunAction.hh"
|
||||
#include "G4Timer.hh"
|
||||
#include "globals.hh"
|
||||
|
||||
class G4Run;
|
||||
|
||||
class ExE03RunAction : public G4UserRunAction
|
||||
{
|
||||
public:
|
||||
ExE03RunAction();
|
||||
virtual ~ExE03RunAction();
|
||||
|
||||
public:
|
||||
virtual void BeginOfRunAction(const G4Run* aRun);
|
||||
virtual void EndOfRunAction(const G4Run* aRun);
|
||||
|
||||
private:
|
||||
G4Timer* timer;
|
||||
};
|
||||
|
||||
#endif
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
@@ -1,112 +0,0 @@
|
||||
|
||||
#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;
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
@@ -1,40 +0,0 @@
|
||||
|
||||
#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);
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
@@ -1,34 +0,0 @@
|
||||
|
||||
#include "ExE03RunAction.hh"
|
||||
|
||||
#include "G4Run.hh"
|
||||
#include "G4UImanager.hh"
|
||||
#include "G4ios.hh"
|
||||
|
||||
ExE03RunAction::ExE03RunAction()
|
||||
{
|
||||
timer = new G4Timer;
|
||||
}
|
||||
|
||||
ExE03RunAction::~ExE03RunAction()
|
||||
{
|
||||
delete timer;
|
||||
}
|
||||
|
||||
void ExE03RunAction::BeginOfRunAction(const G4Run* aRun)
|
||||
{
|
||||
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(const 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
@@ -1,980 +0,0 @@
|
||||
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
@@ -1,41 +0,0 @@
|
||||
#!/usr/bin/perl
|
||||
|
||||
$filename = $ARGV[0];
|
||||
open(INFILE, $filename) || die "\nSTEP file ".$filename." not found.";
|
||||
print "Opening file ".$filename;
|
||||
@filebuf = <INFILE>;
|
||||
close(INFILE);
|
||||
|
||||
$g4 = "G4";
|
||||
$outputfile = $g4 . $filename;
|
||||
open(OUTFILE, ">$outputfile");
|
||||
print "\nModifying STEP file for NIST toolkit...";
|
||||
|
||||
foreach (@filebuf)
|
||||
{
|
||||
if(/.*VERTEX\_POINT.*/)
|
||||
{
|
||||
s/VERTEX\_POINT\(\'\'\,/VERTEX\_POINT\(\'\'\,\'\'\,/g ;
|
||||
}
|
||||
elsif(/.*EDGE\_LOOP.*/)
|
||||
{
|
||||
s/EDGE\_LOOP\(\'\'\,/EDGE\_LOOP\(\'\'\,\'\'\,/g;
|
||||
}
|
||||
elsif(/.*ADVANCED\_FACE.*/)
|
||||
{
|
||||
($a,$b,$c) = split('\)',$&);
|
||||
s//$a\)\,\'\' $b\)$c\n/;
|
||||
}
|
||||
elsif(/.*EDGE\_CURVE.*/)
|
||||
{
|
||||
($a,$b,$c,$d,$e) = split(",",$&);
|
||||
s//$a\, $b\,$c\,\'\'\,$d\,$e\n/;
|
||||
}
|
||||
|
||||
print OUTFILE;
|
||||
}
|
||||
|
||||
close(OUTFILE);
|
||||
print "\nOutput written to ".$outputfile."\n";
|
||||
|
||||
|
||||
@@ -0,0 +1,22 @@
|
||||
# $Id: GNUmakefile,v 1.1 1999/10/11 13:07:23 maire Exp $
|
||||
# --------------------------------------------------------------
|
||||
# GNUmakefile for examples module. Gabriele Cosmo, 06/04/98.
|
||||
# --------------------------------------------------------------
|
||||
|
||||
name := TestEm1
|
||||
G4TARGET := $(name)
|
||||
G4EXLIB := true
|
||||
|
||||
ifndef G4INSTALL
|
||||
G4INSTALL = ../../../..
|
||||
endif
|
||||
|
||||
.PHONY: all
|
||||
all: lib bin
|
||||
|
||||
include $(G4INSTALL)/config/architecture.gmk
|
||||
|
||||
LDFLAGS += -L/cern/pro/lib
|
||||
LOADLIBS += -lpacklib $(FCLIBS)
|
||||
|
||||
include $(G4INSTALL)/config/binmake.gmk
|
||||
@@ -0,0 +1,43 @@
|
||||
$Id: History,v 1.2 1999/10/11 13:14:31 maire Exp $
|
||||
-------------------------------------------------------------------
|
||||
|
||||
=========================================================
|
||||
Geant4 - an Object-Oriented Toolkit for Simulation in HEP
|
||||
=========================================================
|
||||
|
||||
TestEm1 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 *
|
||||
----------------------------------------------------------
|
||||
11-10-99 moved from: source/processes/electromagnetic/test
|
||||
to: examples/extended/electromagnetic
|
||||
|
||||
09-08-99 Commands for save/read Rndm status
|
||||
|
||||
17-06-99 added histogramming facility
|
||||
|
||||
10-05-99 user's actions adapted to geant4-00-ref-04
|
||||
|
||||
03-12-98 subdirectory geant3 which contains the geant3 equivalent
|
||||
example.
|
||||
|
||||
24.11.98 due to new computation of SetCut for electron, the cut in range
|
||||
for e-/+ has been modified in init.mac and run10.mac (beta03-00)
|
||||
|
||||
27.10.98 interactive command for setting StepFunction: deemax + stmin.
|
||||
modifs in setxxCut functions (Hisaya).
|
||||
Count occurence of processes.
|
||||
Now TestEm1 is equivalent to g3-testem1
|
||||
Both can be run in batch with reference files:
|
||||
run1.mac (g4), run1.dat (g3).
|
||||
|
||||
19.10.98 Moved in subdirectory electromagnetic/test/TestEm1.
|
||||
Interactive commands in PhysicsList for setting cuts.
|
||||
|
||||
14.09.98 Created, Michel Maire
|
||||
|
||||
@@ -0,0 +1,102 @@
|
||||
$Id: README,v 1.1 1999/10/11 13:07:24 maire Exp $
|
||||
-------------------------------------------------------------------
|
||||
|
||||
=========================================================
|
||||
Geant4 - an Object-Oriented Toolkit for Simulation in HEP
|
||||
=========================================================
|
||||
|
||||
TestEm1
|
||||
-------
|
||||
|
||||
This example has been setup to test individualy the electromagnetic
|
||||
processes.
|
||||
|
||||
1- GEOMETRY DEFINITION
|
||||
|
||||
It is a simple box which represente an 'infinite' homogeneous medium.
|
||||
|
||||
Two parameters define the geometry :
|
||||
- the material of the box,
|
||||
- the (full) size of the box.
|
||||
|
||||
In addition a transverse uniform magnetic field can be applied.
|
||||
|
||||
The default geometry is constructed in DetectorConstruction class,
|
||||
but all of the above parameters can be changed interactively via
|
||||
the commands defined in the DetectorMessenger class.
|
||||
|
||||
2- PHYSICS LIST
|
||||
|
||||
The particle list is the one of novice/exampleN03.
|
||||
The physics list contains the 'standard' electromagnetic processes,
|
||||
and decay.
|
||||
|
||||
Few commands have been added to PhysicsList, in order to set the
|
||||
production threshold for secondaries either in range for gamma,
|
||||
e-/e+, proton or directly in energy for all charged.
|
||||
|
||||
3- AN EVENT : THE PRIMARY GENERATOR
|
||||
|
||||
The primary kinematic consists of a single particle starting at the
|
||||
middle of the box. The type of the particle and its energy are set
|
||||
in the PrimaryGeneratorAction class, and can be changed via the G4
|
||||
build-in commands of ParticleGun class (see the macros provided with
|
||||
this example).
|
||||
|
||||
A RUN is a set of events.
|
||||
|
||||
|
||||
4- VISUALIZATION
|
||||
|
||||
The Visualization Manager is set in the main().
|
||||
The initialisation of the drawing is done via the command
|
||||
/vis~/create_view in the macro init.mac. This macro is
|
||||
automatically read from the main in case of interactive running mode.
|
||||
|
||||
The detector has a default view which is a longitudinal view of the
|
||||
box.
|
||||
|
||||
The tracks are drawn at the end of event, and erased at the end of run.
|
||||
Optionaly one can choose to draw all particles, only the charged one,
|
||||
or none. This command is defined in EventActionMessenger class.
|
||||
|
||||
5- PHYSICS SURVEY
|
||||
|
||||
The particle's type and the physic processes which will be available
|
||||
in this example are set in PhysicsList class.
|
||||
|
||||
A set of macros defining various run conditions are provided.
|
||||
The processes are actived/inactived together with differents
|
||||
cuts, in order to survey the processes one by one.
|
||||
|
||||
The number of produced secondaries are counted, the number of steps,
|
||||
and the number of process calls responsible of the step.
|
||||
|
||||
6- HOW TO START ?
|
||||
|
||||
- compile and link to generate an executable
|
||||
% cd geant4/examples/extended/electromagnetic/TestEm1
|
||||
% gmake
|
||||
|
||||
- execute TestEm1 in 'batch' mode from macro files
|
||||
% TestEm1 run10.mac
|
||||
|
||||
- execute TestEm1 in 'interactive mode' with visualization
|
||||
% TestEm1
|
||||
....
|
||||
Idle> type your commands
|
||||
....
|
||||
Idle> exit
|
||||
|
||||
7- HISTOGRAMS
|
||||
|
||||
Testem1 produces several histo which are saved as testem1.histo
|
||||
|
||||
Content of these histo:
|
||||
|
||||
1 : track length of a charged particle
|
||||
2 : number of steps per track (charged particle)
|
||||
3 : step length (charged particle)
|
||||
|
||||
|
||||
|
||||
@@ -0,0 +1,107 @@
|
||||
// This code implementation is the intellectual property of
|
||||
// the GEANT4 collaboration.
|
||||
//
|
||||
// By copying, distributing or modifying the Program (or any work
|
||||
// based on the Program) you indicate your acceptance of this statement,
|
||||
// and all its terms.
|
||||
//
|
||||
// $Id: TestEm1.cc,v 1.1.4.1 1999/12/07 20:46:52 gunter Exp $
|
||||
// GEANT4 tag $Name: geant4-01-00 $
|
||||
//
|
||||
//
|
||||
// --------------------------------------------------------------
|
||||
// GEANT 4 - example Em1
|
||||
//
|
||||
// For information related to this code contact:
|
||||
// CERN, IT Division, ASD Group
|
||||
// --------------------------------------------------------------
|
||||
// Comments
|
||||
//
|
||||
//
|
||||
// --------------------------------------------------------------
|
||||
|
||||
#define Em1NoOptimize 1
|
||||
|
||||
#include "G4RunManager.hh"
|
||||
#include "G4UImanager.hh"
|
||||
#include "G4UIterminal.hh"
|
||||
#include "Randomize.hh"
|
||||
|
||||
#include "Em1DetectorConstruction.hh"
|
||||
#include "Em1PhysicsList.hh"
|
||||
#include "Em1PrimaryGeneratorAction.hh"
|
||||
|
||||
#ifdef Em1NoOptimize
|
||||
#include "Em1RunAction.hh"
|
||||
#include "Em1EventAction.hh"
|
||||
#include "Em1TrackingAction.hh"
|
||||
#include "Em1SteppingAction.hh"
|
||||
|
||||
#ifdef G4VIS_USE
|
||||
#include "Em1VisManager.hh"
|
||||
#endif
|
||||
#endif
|
||||
|
||||
int main(int argc,char** argv) {
|
||||
|
||||
//choose the Random engine
|
||||
HepRandom::setTheEngine(new RanecuEngine);
|
||||
|
||||
// Construct the default run manager
|
||||
G4RunManager * runManager = new G4RunManager;
|
||||
|
||||
// set mandatory initialization classes
|
||||
Em1DetectorConstruction* det;
|
||||
runManager->SetUserInitialization(det = new Em1DetectorConstruction);
|
||||
runManager->SetUserInitialization(new Em1PhysicsList(det));
|
||||
runManager->SetUserAction(new Em1PrimaryGeneratorAction);
|
||||
|
||||
#ifdef Em1NoOptimize
|
||||
#ifdef G4VIS_USE
|
||||
// visualization manager
|
||||
G4VisManager* visManager = new Em1VisManager;
|
||||
visManager->Initialize();
|
||||
#endif
|
||||
|
||||
// set user action classes
|
||||
Em1RunAction* RunAct;
|
||||
Em1EventAction* EvtAct;
|
||||
|
||||
runManager->SetUserAction(RunAct = new Em1RunAction);
|
||||
runManager->SetUserAction(EvtAct = new Em1EventAction(RunAct));
|
||||
runManager->SetUserAction(new Em1TrackingAction(RunAct));
|
||||
runManager->SetUserAction(new Em1SteppingAction(RunAct,EvtAct));
|
||||
#endif
|
||||
|
||||
//Initialize G4 kernel
|
||||
runManager->Initialize();
|
||||
|
||||
// get the pointer to the User Interface manager
|
||||
G4UImanager* UI = G4UImanager::GetUIpointer();
|
||||
|
||||
if (argc==1) // Define UI terminal for interactive mode
|
||||
{
|
||||
G4UIsession * session = new G4UIterminal;
|
||||
UI->ApplyCommand("/control/execute init.mac");
|
||||
session->SessionStart();
|
||||
delete session;
|
||||
}
|
||||
else // Batch mode
|
||||
{
|
||||
G4String command = "/control/execute ";
|
||||
G4String fileName = argv[1];
|
||||
UI->ApplyCommand(command+fileName);
|
||||
}
|
||||
|
||||
// job termination
|
||||
#ifdef Em1NoOptimize
|
||||
#ifdef G4VIS_USE
|
||||
delete visManager;
|
||||
#endif
|
||||
#endif
|
||||
|
||||
delete runManager;
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
||||
@@ -0,0 +1,26 @@
|
||||
|
||||
testem1.cra is the geant3 equivalent of TestEm1
|
||||
|
||||
% cd geant3
|
||||
% gmakeB to make an executable (Batch version)
|
||||
% gmakeT to make an executable (inTeractive version)
|
||||
|
||||
To execute:
|
||||
|
||||
% cd geant3
|
||||
% $G4SYSTEM/testem1.xb (for batch) or testem1.xt (for interactive)
|
||||
|
||||
The program will ask:
|
||||
G3 > gives the filename of the data cards to be read:
|
||||
|
||||
run01.dat (runNN.dat is the equivalent of the G4 runNN.mac)
|
||||
|
||||
|
||||
testem1 produces several histo saved as testem1.histo if ISWIT(2)=1
|
||||
|
||||
Content of these histo:
|
||||
|
||||
1 : track length of a charged particle
|
||||
2 : number of steps per track (charged particle)
|
||||
3 : step length (charged particle)
|
||||
|
||||
+43
@@ -0,0 +1,43 @@
|
||||
#
|
||||
# @(#) Script to build a Batch geant executable
|
||||
#
|
||||
set name=testem1
|
||||
|
||||
set extnam=" "
|
||||
if ($G4SYSTEM == AIX-AFS) set extnam=-qextname
|
||||
#
|
||||
mkdir $G4SYSTEM
|
||||
cd $G4SYSTEM
|
||||
#
|
||||
# Run patchy
|
||||
#
|
||||
cat > temp.cra << eocra
|
||||
+USE,batch.
|
||||
eocra
|
||||
cat ../$name.cra >> temp.cra
|
||||
#
|
||||
ypatchy - $name temp $name - $name :go
|
||||
rm temp.cra
|
||||
#
|
||||
# fortran compilation
|
||||
#
|
||||
fsplit $name.f
|
||||
rm $name.f
|
||||
hepf77 $extnam -c -g *.f
|
||||
#
|
||||
# Link
|
||||
#
|
||||
echo 'linking geant3+cernlib libraries ...'
|
||||
#
|
||||
hepf77 $extnam -g -o $name.xb *.o \
|
||||
`cernlib geant321 pawlib graflib packlib mathlib kernlib`
|
||||
#
|
||||
#
|
||||
chmod +x $name.xb
|
||||
#
|
||||
# cleanup
|
||||
#
|
||||
rm *.lis *.lst *.f *.o
|
||||
echo 'done'
|
||||
exit
|
||||
|
||||
+37
@@ -0,0 +1,37 @@
|
||||
#
|
||||
# @(#) Script to build an inTeractive geant executable
|
||||
#
|
||||
set name=testem1
|
||||
|
||||
set extnam=" "
|
||||
if ($G4SYSTEM == AIX-AFS) set extnam=-qextname
|
||||
#
|
||||
mkdir $G4SYSTEM
|
||||
cd $G4SYSTEM
|
||||
#
|
||||
# Run patchy
|
||||
#
|
||||
ypatchy - $name ../$name $name - $name :go
|
||||
#
|
||||
# fortran compilation
|
||||
#
|
||||
fsplit $name.f
|
||||
rm $name.f
|
||||
hepf77 $extnam -c -g *.f
|
||||
#
|
||||
# Link
|
||||
#
|
||||
echo 'linking geant3+cernlib libraries...'
|
||||
#
|
||||
hepf77 $extnam -g -o $name.xt *.o \
|
||||
`cernlib geant321 pawlib graflib packlib mathlib kernlib`
|
||||
#
|
||||
#
|
||||
chmod +x $name.xt
|
||||
#
|
||||
# cleanup
|
||||
#
|
||||
rm *.lis *.lst *.f *.o
|
||||
echo 'done'
|
||||
exit
|
||||
|
||||
@@ -0,0 +1,14 @@
|
||||
LIST
|
||||
C
|
||||
C geantino; 10000 evts
|
||||
C
|
||||
CALOR 5 (Imat) 2000. (size) 0. (field)
|
||||
TRIG 10000
|
||||
KINE 48 (Itype) 1.0 (Ekine)
|
||||
DEBUG 10 5 1000
|
||||
SWIT 0 (draw) 0 (save)
|
||||
CUTS 10.e-6 (cutgam) 10.e-6 (cutele) 3*10.e-3 (cutneu/had/muo)
|
||||
2*10.e-6 (bcute/m) 2*10.e-6 (dcute/m) 10.e-3 (ppcutm)
|
||||
ABAN 0
|
||||
LOSS 1
|
||||
TIME 2=1.
|
||||
@@ -0,0 +1,18 @@
|
||||
LIST
|
||||
C
|
||||
C Eloss only; no fluctuation; e- 1 Gev
|
||||
C
|
||||
CALOR 5 (Imat) 2000. (size) 0. (field)
|
||||
TRIG 100
|
||||
KINE 3 (Itype) 1.000 (Ekine)
|
||||
DEBUG 10 5 1000
|
||||
SWIT 0 (draw) 0 (save)
|
||||
CUTS 10.e-6 (cutgam) 10.e-6 (cutele) 3*10.e-3 (cutneu/had/muo)
|
||||
2*10.e+3 (bcute/m) 2*10.e+3 (dcute/m) 10.e-3 (ppcutm)
|
||||
ABAN 0
|
||||
PHOT 0
|
||||
COMP 0
|
||||
PAIR 0
|
||||
MULS 0
|
||||
LOSS 4
|
||||
TIME 2=1.
|
||||
@@ -0,0 +1,18 @@
|
||||
LIST
|
||||
C
|
||||
C Eloss only; glandz fluctuations; e- 1 Gev
|
||||
C
|
||||
CALOR 5 (Imat) 2000. (size) 0. (field)
|
||||
TRIG 100
|
||||
KINE 3 (Itype) 1.000 (Ekine)
|
||||
DEBUG 10 5 1000
|
||||
SWIT 0 (draw) 0 (save)
|
||||
CUTS 10.e-6 (cutgam) 10.e-6 (cutele) 3*10.e-3 (cutneu/had/muo)
|
||||
2*10.e+3 (bcute/m) 2*10.e+3 (dcute/m) 10.e-3 (ppcutm)
|
||||
ABAN 0
|
||||
PHOT 0
|
||||
COMP 0
|
||||
PAIR 0
|
||||
MULS 0
|
||||
LOSS 1
|
||||
TIME 2=1.
|
||||
@@ -0,0 +1,18 @@
|
||||
LIST
|
||||
C
|
||||
C Eloss+muls only; no fluctuation; e- 10 Mev
|
||||
C
|
||||
CALOR 5 (Imat) 2000. (size) 0. (field)
|
||||
TRIG 100
|
||||
KINE 3 (Itype) 0.010 (Ekine)
|
||||
DEBUG 10 5 1000
|
||||
SWIT 0 (draw) 0 (save)
|
||||
CUTS 10.e-6 (cutgam) 10.e-6 (cutele) 3*10.e-3 (cutneu/had/muo)
|
||||
2*10.e+3 (bcute/m) 2*10.e+3 (dcute/m) 10.e-3 (ppcutm)
|
||||
ABAN 0
|
||||
PHOT 0
|
||||
COMP 0
|
||||
PAIR 0
|
||||
MULS 1
|
||||
LOSS 4
|
||||
TIME 2=1.
|
||||
@@ -0,0 +1,18 @@
|
||||
LIST
|
||||
C
|
||||
C full Ionisation only; e- 100 Mev
|
||||
C
|
||||
CALOR 5 (Imat) 2000. (size) 0. (field)
|
||||
TRIG 100
|
||||
KINE 3 (Itype) 0.100 (Ekine)
|
||||
DEBUG 10 5 1000
|
||||
SWIT 0 (draw) 0 (save)
|
||||
CUTS 10.e-6 (cutgam) 10.e-6 (cutele) 3*10.e-3 (cutneu/had/muo)
|
||||
2*10.e+3 (bcute/m) 2*10.e-6 (dcute/m) 10.e-3 (ppcutm)
|
||||
ABAN 0
|
||||
PHOT 0
|
||||
COMP 0
|
||||
PAIR 0
|
||||
MULS 0
|
||||
LOSS 1
|
||||
TIME 2=1.
|
||||
@@ -0,0 +1,18 @@
|
||||
LIST
|
||||
C
|
||||
C full Brems only; e- 1 Gev
|
||||
C
|
||||
CALOR 5 (Imat) 2000. (size) 0. (field)
|
||||
TRIG 100
|
||||
KINE 3 (Itype) 1.000 (Ekine)
|
||||
DEBUG 10 5 1000
|
||||
SWIT 0 (draw) 0 (save)
|
||||
CUTS 10.e-6 (cutgam) 10.e-6 (cutele) 3*10.e-3 (cutneu/had/muo)
|
||||
2*10.e-6 (bcute/m) 2*10.e+3 (dcute/m) 10.e-3 (ppcutm)
|
||||
ABAN 0
|
||||
PHOT 0
|
||||
COMP 0
|
||||
PAIR 0
|
||||
MULS 0
|
||||
LOSS 1
|
||||
TIME 2=1.
|
||||
@@ -0,0 +1,18 @@
|
||||
LIST
|
||||
C
|
||||
C Compton + Photo electric; gamma 10 MeV
|
||||
C
|
||||
CALOR 5 (Imat) 2000. (size) 0. (field)
|
||||
TRIG 1000
|
||||
KINE 1 (Itype) 0.010 (Ekine)
|
||||
DEBUG 10 5 1000
|
||||
SWIT 0 (draw) 0 (save)
|
||||
CUTS 10.e-6 (cutgam) 10.e-6 (cutele) 3*10.e-3 (cutneu/had/muo)
|
||||
2*10.e+3 (bcute/m) 2*10.e+3 (dcute/m) 10.e-3 (ppcutm)
|
||||
ABAN 0
|
||||
PHOT 2
|
||||
COMP 2
|
||||
PAIR 0
|
||||
MULS 0
|
||||
LOSS 1
|
||||
TIME 2=1.
|
||||
@@ -0,0 +1,19 @@
|
||||
LIST
|
||||
C
|
||||
C Gamma conversion and e+ annihilation; gamma 100 MeV
|
||||
C
|
||||
CALOR 5 (Imat) 2000. (size) 0. (field)
|
||||
TRIG 1000
|
||||
KINE 1 (Itype) 0.100 (Ekine)
|
||||
DEBUG 10 5 1000
|
||||
SWIT 0 (draw) 0 (save)
|
||||
CUTS 10.e-6 (cutgam) 10.e-6 (cutele) 3*10.e-3 (cutneu/had/muo)
|
||||
2*10.e+3 (bcute/m) 2*15.e-3 (dcute/m) 10.e-3 (ppcutm)
|
||||
ABAN 0
|
||||
PHOT 0
|
||||
COMP 0
|
||||
PAIR 1
|
||||
ANNI 2
|
||||
MULS 0
|
||||
LOSS 1
|
||||
TIME 2=1.
|
||||
@@ -0,0 +1,14 @@
|
||||
LIST
|
||||
C
|
||||
C e- 100 Mev; all processes
|
||||
C
|
||||
CALOR 5 (Imat) 2000. (size) 0. (field)
|
||||
TRIG 100
|
||||
KINE 3 (Itype) 0.100 (Ekine)
|
||||
DEBUG 10 5 1000
|
||||
SWIT 0 (draw) 0 (save)
|
||||
CUTS 10.e-6 (cutgam) 10.e-6 (cutele) 3*10.e-3 (cutneu/had/muo)
|
||||
2*10.e-6 (bcute/m) 2*10.e-6 (dcute/m) 10.e-3 (ppcutm)
|
||||
ABAN 0
|
||||
LOSS 1
|
||||
TIME 2=1.
|
||||
@@ -0,0 +1,14 @@
|
||||
LIST
|
||||
C
|
||||
C e- 1 Gev; all processes
|
||||
C
|
||||
CALOR 5 (Imat) 2000. (size) 0. (field)
|
||||
TRIG 100
|
||||
KINE 3 (Itype) 1.000 (Ekine)
|
||||
DEBUG 10 5 1000
|
||||
SWIT 0 (draw) 0 (save)
|
||||
CUTS 10.e-6 (cutgam) 10.e-6 (cutele) 3*10.e-3 (cutneu/had/muo)
|
||||
2*10.e-6 (bcute/m) 2*10.e-6 (dcute/m) 10.e-3 (ppcutm)
|
||||
ABAN 0
|
||||
LOSS 1
|
||||
TIME 2=1.
|
||||
@@ -0,0 +1,14 @@
|
||||
LIST
|
||||
C
|
||||
C Eloss only + muls; e- 1 Gev
|
||||
C
|
||||
CALOR 5 (Imat) 2000. (size) 0. (field)
|
||||
TRIG 1000
|
||||
KINE 3 (Itype) 1.000 (Ekine)
|
||||
DEBUG 10 5 1000
|
||||
SWIT 0 (draw) 1 (save)
|
||||
CUTS 10.e-6 (cutgam) 10.e-6 (cutele) 3*10.e-3 (cutneu/had/muo)
|
||||
2*10.e+3 (bcute/m) 2*100.e-3 (dcute/m) 10.e-3 (ppcutm)
|
||||
ABAN 0
|
||||
LOSS 1
|
||||
TIME 2=1.
|
||||
@@ -0,0 +1,423 @@
|
||||
+OPTION,MAPASM.
|
||||
+ASM,23.
|
||||
+USE,GCDES,TestEm1,T=EXE.
|
||||
*
|
||||
+EXE,CRA*.
|
||||
*
|
||||
+PAM,11,T=CARD,T=ATTACH. /cern/pro/src/car/geant321.car
|
||||
+PATCH,TestEm1.
|
||||
+DECK,BLANKDEK.
|
||||
*
|
||||
* TestEm1 1.00 /01 980918 13.00 GEANT EXAMPLES
|
||||
*
|
||||
* TEST PROGRAM FOR GEANT TEST
|
||||
*
|
||||
* Author M.Maire *********
|
||||
*
|
||||
*
|
||||
* History
|
||||
* -------
|
||||
*
|
||||
*
|
||||
+KEEP,CALOR.
|
||||
COMMON/CALOR/Imat,BoxSize,Field
|
||||
*
|
||||
* Imat = GEANT material number. (data card CALOR)
|
||||
* BoxSize = total size of the box (cm) (data card CALOR)
|
||||
* Field = magnetic field (tesla) (data card CALOR)
|
||||
*
|
||||
+KEEP,CELOSS.
|
||||
COMMON/CELOSS/ ETOT,NTRAK0,NTRAK1,NSTEP0,NSTEP1,NBCALL(12),
|
||||
+ NSTRK0,NSTRK1
|
||||
|
||||
+DECK,main,if=batch.
|
||||
PROGRAM main
|
||||
*
|
||||
*
|
||||
PARAMETER (NGBANK=100000, NHBOOK=10000)
|
||||
COMMON/GCBANK/Q(NGBANK)
|
||||
COMMON/PAWC /H(NHBOOK)
|
||||
*
|
||||
CALL GZEBRA( NGBANK)
|
||||
CALL HLIMIT(-NHBOOK)
|
||||
*
|
||||
* *** initialize HIGZ
|
||||
CALL HPLINT(0)
|
||||
*
|
||||
* *** GEANT initialisation
|
||||
CALL UGINIT
|
||||
*
|
||||
* *** Start events processing
|
||||
CALL GRUN
|
||||
*
|
||||
* *** End of RUN
|
||||
CALL UGLAST
|
||||
*
|
||||
STOP
|
||||
END
|
||||
+DECK,main,IF=-batch.
|
||||
PROGRAM main
|
||||
*
|
||||
* GEANT main program. To link with the MOTIF user interface
|
||||
* the routine GPAWPP(NWGEAN,NWPAW) should be called, whereas
|
||||
* the routine GPAW(NWGEAN,NWPAW) gives access to the basic
|
||||
* graphics version.
|
||||
*
|
||||
PARAMETER (NWGEAN=3000000, NWPAW=1000000)
|
||||
COMMON/GCBANK/GEANT(NWGEAN)
|
||||
COMMON/PAWC /PAW (NWPAW)
|
||||
*
|
||||
*
|
||||
CALL GPAW (NWGEAN,NWPAW)
|
||||
*
|
||||
END
|
||||
*
|
||||
SUBROUTINE qnext
|
||||
END
|
||||
*
|
||||
SUBROUTINE czopen
|
||||
END
|
||||
*
|
||||
SUBROUTINE cztcp
|
||||
END
|
||||
*
|
||||
SUBROUTINE czclos
|
||||
END
|
||||
*
|
||||
SUBROUTINE czputa
|
||||
END
|
||||
+DECK,UGINIT
|
||||
SUBROUTINE UGINIT
|
||||
*
|
||||
* To initialise GEANT/USER program and read data cards
|
||||
*
|
||||
+SEQ,CALOR,CELOSS.
|
||||
*
|
||||
CHARACTER*20 filnam
|
||||
*
|
||||
* *** Define the GEANT parameters
|
||||
CALL GINIT
|
||||
|
||||
* *** read data cards
|
||||
PRINT *, 'G3 > gives the filename of the data cards to be read:'
|
||||
READ (*,'(A)') filnam
|
||||
IF (filnam.EQ.' ') filnam = 'testem1.dat'
|
||||
OPEN (unit=5,file=filnam,status='unknown',form='formatted')
|
||||
|
||||
*
|
||||
* *** Calor definition
|
||||
CALL FFKEY('CALOR',Imat,3,'MIXED')
|
||||
*
|
||||
* *** read data cards
|
||||
CALL GFFGO
|
||||
|
||||
*
|
||||
CALL GZINIT
|
||||
CALL GPART
|
||||
*
|
||||
CALL GDINIT
|
||||
*
|
||||
* *** Geometry and materials description
|
||||
CALL UGEOM
|
||||
*
|
||||
* *** Energy loss and cross-sections initialisations
|
||||
CALL GPHYSI
|
||||
*
|
||||
CALL GPRINT('MATE',0)
|
||||
CALL GPRINT('TMED',0)
|
||||
CALL GPRINT('VOLU',0)
|
||||
*
|
||||
* *** Define user histograms
|
||||
CALL UHINIT
|
||||
*
|
||||
* *** some initialisation
|
||||
NTRAK0 = 0
|
||||
NTRAK1 = 0
|
||||
NSTEP0 = 0
|
||||
NSTEP1 = 0
|
||||
CALL VZERO (NBCALL,12)
|
||||
*
|
||||
END
|
||||
+DECK,UGEOM.
|
||||
SUBROUTINE UGEOM
|
||||
*
|
||||
* *** Define user geometry set up
|
||||
*
|
||||
*
|
||||
+SEQ,CALOR.
|
||||
*
|
||||
DIMENSION PAR(3)
|
||||
|
||||
DIMENSION Aair(2),Zair(2),Wair(2)
|
||||
DIMENSION AH2O(2),ZH2O(2),WH2O(2)
|
||||
*
|
||||
* *** Air compound parameters
|
||||
DATA Aair/14.01, 16.00/
|
||||
DATA Zair/ 7. , 8. /
|
||||
DATA Wair/ 0.7 , 0.3 /
|
||||
*
|
||||
* *** Air compound parameters
|
||||
DATA AH2O/ 1.01, 16.00/
|
||||
DATA ZH2O/ 1. , 8. /
|
||||
DATA WH2O/ 2. , 1. /
|
||||
*
|
||||
* *** Defines USER perticular materials
|
||||
CALL GSMIXT( 1,'Air' , Aair ,Zair, 1.29E-3, 2 , Wair)
|
||||
CALL GSMATE( 2,'H2 Liquid', 1.01, 1., 0.0708 , 865., 790., 0,0)
|
||||
CALL GSMIXT( 3,'Water' , AH2O ,ZH2O, 1.0 ,-2 , WH2O)
|
||||
CALL GSMATE( 4,'Liquid Ar', 39.95, 18., 1.39 , 14.0, 84.0, 0,0)
|
||||
CALL GSMATE( 5,'Aluminium', 26.98, 13., 2.7 , 8.9, 37.2, 0,0)
|
||||
CALL GSMATE( 6,'Iron ', 55.85, 26., 7.87 , 1.76, 17.1, 0,0)
|
||||
CALL GSMATE( 7,'Lead ',207.19, 82., 11.35 , 0.56, 18.5, 0,0)
|
||||
CALL GSMATE( 8,'Uranium ',238.03, 92., 18.95 , 0.32, 12. , 0,0)
|
||||
*
|
||||
*
|
||||
* *** Defines USER tracking media parameters
|
||||
IFIELD = 0
|
||||
IF (Field.GT.0.) IFIELD = 3
|
||||
FIELDM = 10*Field
|
||||
TMAXFD = 10.0
|
||||
STEMAX = 1000.
|
||||
DEEMAX = 0.20
|
||||
EPSIL = 0.001
|
||||
STMIN = 0.010
|
||||
*
|
||||
CALL GSTMED( 1,'Container',Imat, 0 ,IFIELD,FIELDM,TMAXFD,
|
||||
* STEMAX,DEEMAX,EPSIL,STMIN, 0 , 0 )
|
||||
*
|
||||
*
|
||||
* *** Geometry
|
||||
PAR(1) = BoxSize/2.
|
||||
PAR(2) = BoxSize/2.
|
||||
PAR(3) = BoxSize/2.
|
||||
CALL GSVOLU('aBox','BOX ',1,PAR,3,IVOL)
|
||||
*
|
||||
* *** Close geometry banks. (obligatory system routine)
|
||||
CALL GGCLOS
|
||||
*
|
||||
*
|
||||
* *** dessin
|
||||
CALL GSATT ('*','SEEN',1)
|
||||
*
|
||||
DO IX = 1,3
|
||||
CALL GDOPEN (IX)
|
||||
SCALE = 18./BoxSize
|
||||
PAXIS = 0.
|
||||
SAXIS = 1.
|
||||
CALL GDRAWC ('aBox',IX,0.,10.,9.3,SCALE,SCALE)
|
||||
CALL GDAXIS (PAXIS,PAXIS,PAXIS,SAXIS)
|
||||
CALL GDSCAL (10. , 0.3)
|
||||
CALL GDCLOS
|
||||
END DO
|
||||
*
|
||||
|
||||
END
|
||||
+DECK,UHINIT.
|
||||
SUBROUTINE UHINIT
|
||||
*
|
||||
* To book the user's histograms
|
||||
*
|
||||
CALL HBOOK1(1,'track length (mm) of a charged particle',
|
||||
+ 100,0.,500.,0.)
|
||||
CALL HBOOK1(2,'Nb of steps per track (charged particle)',
|
||||
+ 100,0.,100.,0.)
|
||||
CALL HBOOK1(3,'step length (mm) charged particle',
|
||||
+ 100,0.,10. ,0.)
|
||||
*
|
||||
END
|
||||
+DECK,GUKINE
|
||||
SUBROUTINE GUKINE
|
||||
*
|
||||
* Generates Kinematics for primary track
|
||||
*
|
||||
* Data card Kine : Itype Ekine
|
||||
*
|
||||
+SEQ,GCBANK,GCFLAG,GCKINE.
|
||||
*
|
||||
DIMENSION VERTEX(3),PLAB(3)
|
||||
*
|
||||
DATA VERTEX/3*0./
|
||||
DATA PLAB /3*0./
|
||||
*
|
||||
*
|
||||
CALL GSVERT(VERTEX,0,0,0,0,NVERT)
|
||||
*
|
||||
*
|
||||
JPA = LQ(JPART-IKINE)
|
||||
XMASS = Q(JPA+7)
|
||||
PLAB(1) = SQRT(PKINE(1)*(PKINE(1)+2*XMASS))
|
||||
*
|
||||
CALL GSKINE(PLAB,IKINE,NVERT,0,0,NT)
|
||||
*
|
||||
* *** Kinematics debug
|
||||
IF (IEVENT.EQ.1.OR.IDEBUG.NE.0) CALL GPRINT('KINE',0)
|
||||
*
|
||||
END
|
||||
+DECK,GUTREV
|
||||
SUBROUTINE GUTREV
|
||||
*
|
||||
* User routine to control tracking of one event
|
||||
* Called by GRUN
|
||||
*
|
||||
+SEQ,CELOSS
|
||||
*
|
||||
ETOT = 0.
|
||||
*
|
||||
CALL GTREVE
|
||||
*
|
||||
END
|
||||
+DECK,GUTRAK
|
||||
SUBROUTINE GUTRAK
|
||||
*
|
||||
* User routine to control tracking of one track
|
||||
* Called by GTREVE
|
||||
*
|
||||
+SEQ,GCKINE.
|
||||
+SEQ,GCTRAK.
|
||||
+SEQ,CELOSS.
|
||||
*
|
||||
*
|
||||
* *** initialisation track per track
|
||||
NSTRK0 = 0
|
||||
NSTRK1 = 0
|
||||
*
|
||||
CALL GTRACK
|
||||
*
|
||||
* *** count nb of tracks
|
||||
IF (CHARGE.NE.0.) THEN
|
||||
NTRAK1 = NTRAK1 + 1
|
||||
CALL HFILL (1,SLENG*10,0.,1.)
|
||||
CALL HFILL (2,REAL(NSTRK1),0.,1.)
|
||||
ELSE
|
||||
NTRAK0 = NTRAK0 + 1
|
||||
ENDIF
|
||||
*
|
||||
END
|
||||
+DECK,GUSTEP
|
||||
SUBROUTINE GUSTEP
|
||||
*
|
||||
* User routine called at the end of each tracking step
|
||||
*
|
||||
+SEQ,GCFLAG.
|
||||
+SEQ,GCKINE,GCKING,GCTRAK.
|
||||
+SEQ,CELOSS.
|
||||
*
|
||||
*
|
||||
* *** Debug event and store tracks for drawing
|
||||
IF (IDEBUG.NE.0) CALL GPCXYZ
|
||||
IF ((ISWIT(1).EQ.1).AND.(CHARGE.NE.0.)) CALL GSXYZ
|
||||
IF (ISWIT(1).EQ.2) CALL GSXYZ
|
||||
*
|
||||
* *** Something generated ?
|
||||
IF(NGKINE.GT.0) CALL GSKING(0)
|
||||
*
|
||||
* *** Energy deposited
|
||||
ETOT = ETOT + DESTEP
|
||||
*
|
||||
* *** count number of steps
|
||||
IF (CHARGE.NE.0.) THEN
|
||||
NSTEP1 = NSTEP1 + 1
|
||||
NSTRK1 = NSTRK1 + 1
|
||||
CALL HFILL (3,STEP*10,0.,1.)
|
||||
ELSE
|
||||
NSTEP0 = NSTEP0 + 1
|
||||
NSTRK0 = NSTRK0 + 1
|
||||
ENDIF
|
||||
*
|
||||
* *** count nb of invoked processes
|
||||
IF (NMEC.GT.0) THEN
|
||||
DO IM = 1,NMEC
|
||||
IPROC = LMEC(IM)
|
||||
IF (IPROC.EQ.21) IPROC = 12
|
||||
IF (IPROC.LE.12) NBCALL(IPROC) = NBCALL(IPROC)+1
|
||||
ENDDO
|
||||
ENDIF
|
||||
|
||||
END
|
||||
+DECK,GUOUT
|
||||
SUBROUTINE GUOUT
|
||||
*
|
||||
* User routine called at the end of each event
|
||||
*
|
||||
+SEQ,GCFLAG.
|
||||
+SEQ,CELOSS.
|
||||
*
|
||||
CHARACTER*4 unit
|
||||
*
|
||||
* *** drawing
|
||||
*
|
||||
+self,if=-batch.
|
||||
IF (ISWIT(1).NE.0) THEN
|
||||
CALL GDHEAD (110110,'TestEm1',0.)
|
||||
CALL GDSHOW (3)
|
||||
CALL GDXYZ (0)
|
||||
END IF
|
||||
+self.
|
||||
*
|
||||
* energy deposited
|
||||
*
|
||||
CALL GEVKEV (ETOT,ETunit,unit)
|
||||
IF (ISWIT(1).NE.0) PRINT 750,ETunit,unit
|
||||
*
|
||||
750 FORMAT(1X,'Energy deposit: ',F8.3,A4)
|
||||
*
|
||||
END
|
||||
+DECK,UGLAST
|
||||
SUBROUTINE UGLAST
|
||||
*
|
||||
* Termination routine to print histograms and statistics
|
||||
*
|
||||
+SEQ,GCFLAG.
|
||||
+SEQ,GCTRAK.
|
||||
+SEQ,CELOSS.
|
||||
|
||||
*
|
||||
* *** nb of steps and tracks per event
|
||||
TOTEVT = IEVENT
|
||||
FNTRK0 = NTRAK0/TOTEVT
|
||||
FNTRK1 = NTRAK1/TOTEVT
|
||||
FNSTP0 = NSTEP0/TOTEVT
|
||||
FNSTP1 = NSTEP1/TOTEVT
|
||||
PRINT 750, FNTRK0,FNTRK1,FNSTP0,FNSTP1
|
||||
*
|
||||
* *** frequency of processes call
|
||||
CALL UCTOH('MUNU',NAMEC(12),4,4)
|
||||
PRINT 760,(NAMEC(I),I=1,12)
|
||||
PRINT 761,(NBCALL(I)/TOTEVT,I=1,12)
|
||||
*
|
||||
* *** geant termination
|
||||
CALL GLAST
|
||||
*
|
||||
* *** print selected histo
|
||||
|
||||
*
|
||||
* *** close HIGZ file
|
||||
CALL HPLEND
|
||||
*
|
||||
* *** Save selected histograms
|
||||
IF (ISWIT(2).EQ.1) THEN
|
||||
CALL HRPUT(0,'testem1.histo','N')
|
||||
ENDIF
|
||||
*
|
||||
* *** formats
|
||||
750 FORMAT(//,1X,'nb tracks/event neutral: ',F9.2,' charged: ',F9.2,
|
||||
+ /,1X,'nb steps/event neutral: ',F9.2,' charged: ',F9.2)
|
||||
|
||||
760 FORMAT(//,1X,'nb of process calls per event: ',
|
||||
+ /,3X,12A9)
|
||||
761 FORMAT( 3X,12F9.2,//)
|
||||
*
|
||||
END
|
||||
+DECK,ffread,T=data.
|
||||
LIST
|
||||
CALOR 5 (Imat) 2000. (size) 0. (field)
|
||||
TRIG 100
|
||||
KINE 3 (Itype) 0.100 (Ekine)
|
||||
DEBUG 10 5 1000
|
||||
SWIT 0 (draw) 0 (save)
|
||||
CUTS 10.e-6 (cutgam) 10.e-6 (cutele) 3*10.e-3 (cutneu/had/muo)
|
||||
2*10.e-6 (bcute/m) 2*10.e-6 (dcute/m) 10.e-3 (ppcutm)
|
||||
ABAN 0
|
||||
LOSS 1
|
||||
TIME 2=1.
|
||||
+QUIT.
|
||||
@@ -0,0 +1,77 @@
|
||||
// This code implementation is the intellectual property of
|
||||
// the GEANT4 collaboration.
|
||||
//
|
||||
// By copying, distributing or modifying the Program (or any work
|
||||
// based on the Program) you indicate your acceptance of this statement,
|
||||
// and all its terms.
|
||||
//
|
||||
// $Id: Em1DetectorConstruction.hh,v 1.1.4.1 1999/12/07 20:46:53 gunter Exp $
|
||||
// GEANT4 tag $Name: geant4-01-00 $
|
||||
//
|
||||
//
|
||||
|
||||
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo....
|
||||
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo....
|
||||
|
||||
#ifndef Em1DetectorConstruction_h
|
||||
#define Em1DetectorConstruction_h 1
|
||||
|
||||
#include "G4VUserDetectorConstruction.hh"
|
||||
#include "globals.hh"
|
||||
|
||||
class G4LogicalVolume;
|
||||
class G4Material;
|
||||
class G4UniformMagField;
|
||||
class Em1DetectorMessenger;
|
||||
|
||||
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo....
|
||||
|
||||
class Em1DetectorConstruction : public G4VUserDetectorConstruction
|
||||
{
|
||||
public:
|
||||
|
||||
Em1DetectorConstruction();
|
||||
~Em1DetectorConstruction();
|
||||
|
||||
public:
|
||||
|
||||
G4VPhysicalVolume* Construct();
|
||||
|
||||
void SetSize (G4double);
|
||||
void SetMaterial (G4String);
|
||||
void SetMagField (G4double);
|
||||
|
||||
void UpdateGeometry();
|
||||
|
||||
public:
|
||||
|
||||
const
|
||||
G4VPhysicalVolume* GetWorld() {return pBox;};
|
||||
|
||||
G4double GeSize() {return BoxSize;};
|
||||
G4Material* GetMaterial() {return aMaterial;};
|
||||
|
||||
void PrintParameters();
|
||||
|
||||
private:
|
||||
|
||||
G4VPhysicalVolume* pBox;
|
||||
G4LogicalVolume* lBox;
|
||||
|
||||
G4double BoxSize;
|
||||
G4Material* aMaterial;
|
||||
G4UniformMagField* magField;
|
||||
|
||||
Em1DetectorMessenger* detectorMessenger;
|
||||
|
||||
private:
|
||||
|
||||
void DefineMaterials();
|
||||
G4VPhysicalVolume* ConstructVolumes();
|
||||
};
|
||||
|
||||
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo....
|
||||
|
||||
|
||||
#endif
|
||||
|
||||
@@ -0,0 +1,51 @@
|
||||
// This code implementation is the intellectual property of
|
||||
// the GEANT4 collaboration.
|
||||
//
|
||||
// By copying, distributing or modifying the Program (or any work
|
||||
// based on the Program) you indicate your acceptance of this statement,
|
||||
// and all its terms.
|
||||
//
|
||||
// $Id: Em1DetectorMessenger.hh,v 1.1.4.1 1999/12/07 20:46:53 gunter Exp $
|
||||
// GEANT4 tag $Name: geant4-01-00 $
|
||||
//
|
||||
//
|
||||
|
||||
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo....
|
||||
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo....
|
||||
|
||||
#ifndef Em1DetectorMessenger_h
|
||||
#define Em1DetectorMessenger_h 1
|
||||
|
||||
#include "globals.hh"
|
||||
#include "G4UImessenger.hh"
|
||||
|
||||
class Em1DetectorConstruction;
|
||||
class G4UIdirectory;
|
||||
class G4UIcmdWithAString;
|
||||
class G4UIcmdWithADoubleAndUnit;
|
||||
class G4UIcmdWithoutParameter;
|
||||
|
||||
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo....
|
||||
|
||||
class Em1DetectorMessenger: public G4UImessenger
|
||||
{
|
||||
public:
|
||||
|
||||
Em1DetectorMessenger(Em1DetectorConstruction* );
|
||||
~Em1DetectorMessenger();
|
||||
|
||||
void SetNewValue(G4UIcommand*, G4String);
|
||||
|
||||
private:
|
||||
|
||||
Em1DetectorConstruction* Em1Detector;
|
||||
|
||||
G4UIdirectory* Em1detDir;
|
||||
G4UIcmdWithAString* MaterCmd;
|
||||
G4UIcmdWithADoubleAndUnit* SizeCmd;
|
||||
G4UIcmdWithADoubleAndUnit* MagFieldCmd;
|
||||
G4UIcmdWithoutParameter* UpdateCmd;
|
||||
};
|
||||
|
||||
#endif
|
||||
|
||||
@@ -0,0 +1,53 @@
|
||||
// This code implementation is the intellectual property of
|
||||
// the GEANT4 collaboration.
|
||||
//
|
||||
// By copying, distributing or modifying the Program (or any work
|
||||
// based on the Program) you indicate your acceptance of this statement,
|
||||
// and all its terms.
|
||||
//
|
||||
// $Id: Em1EventAction.hh,v 1.1.4.1 1999/12/07 20:46:53 gunter Exp $
|
||||
// GEANT4 tag $Name: geant4-01-00 $
|
||||
//
|
||||
//
|
||||
|
||||
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo....
|
||||
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo....
|
||||
|
||||
#ifndef Em1EventAction_h
|
||||
#define Em1EventAction_h 1
|
||||
|
||||
#include "G4UserEventAction.hh"
|
||||
#include "globals.hh"
|
||||
|
||||
class Em1RunAction;
|
||||
class Em1EventActionMessenger;
|
||||
|
||||
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo....
|
||||
|
||||
class Em1EventAction : public G4UserEventAction
|
||||
{
|
||||
public:
|
||||
Em1EventAction(Em1RunAction*);
|
||||
~Em1EventAction();
|
||||
|
||||
public:
|
||||
void BeginOfEventAction(const G4Event*);
|
||||
void EndOfEventAction(const G4Event*);
|
||||
|
||||
void addEdep(G4double Edep) {TotalEnergyDeposit += Edep;};
|
||||
G4double GetEnergyDeposit() {return TotalEnergyDeposit;};
|
||||
void SetDrawFlag(G4String val) {drawFlag = val;};
|
||||
void SetPrintModulo(G4int val) {printModulo = val;};
|
||||
|
||||
|
||||
private:
|
||||
Em1RunAction* Em1Run;
|
||||
G4double TotalEnergyDeposit;
|
||||
G4String drawFlag;
|
||||
G4int printModulo;
|
||||
Em1EventActionMessenger* eventMessenger;
|
||||
};
|
||||
|
||||
#endif
|
||||
|
||||
|
||||
@@ -0,0 +1,42 @@
|
||||
// This code implementation is the intellectual property of
|
||||
// the GEANT4 collaboration.
|
||||
//
|
||||
// By copying, distributing or modifying the Program (or any work
|
||||
// based on the Program) you indicate your acceptance of this statement,
|
||||
// and all its terms.
|
||||
//
|
||||
// $Id: Em1EventActionMessenger.hh,v 1.1.4.1 1999/12/07 20:46:53 gunter Exp $
|
||||
// GEANT4 tag $Name: geant4-01-00 $
|
||||
//
|
||||
//
|
||||
|
||||
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo....
|
||||
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo....
|
||||
|
||||
#ifndef Em1EventActionMessenger_h
|
||||
#define Em1EventActionMessenger_h 1
|
||||
|
||||
#include "globals.hh"
|
||||
#include "G4UImessenger.hh"
|
||||
|
||||
class Em1EventAction;
|
||||
class G4UIcmdWithAString;
|
||||
class G4UIcmdWithAnInteger;
|
||||
|
||||
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo....
|
||||
|
||||
class Em1EventActionMessenger: public G4UImessenger
|
||||
{
|
||||
public:
|
||||
Em1EventActionMessenger(Em1EventAction*);
|
||||
~Em1EventActionMessenger();
|
||||
|
||||
void SetNewValue(G4UIcommand*, G4String);
|
||||
|
||||
private:
|
||||
Em1EventAction* eventAction;
|
||||
G4UIcmdWithAString* DrawCmd;
|
||||
G4UIcmdWithAnInteger* PrintCmd;
|
||||
};
|
||||
|
||||
#endif
|
||||
@@ -0,0 +1,66 @@
|
||||
// This code implementation is the intellectual property of
|
||||
// the GEANT4 collaboration.
|
||||
//
|
||||
// By copying, distributing or modifying the Program (or any work
|
||||
// based on the Program) you indicate your acceptance of this statement,
|
||||
// and all its terms.
|
||||
//
|
||||
// $Id: Em1PhysicsList.hh,v 1.1.4.1 1999/12/07 20:46:53 gunter Exp $
|
||||
// GEANT4 tag $Name: geant4-01-00 $
|
||||
//
|
||||
//
|
||||
|
||||
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo....
|
||||
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo....
|
||||
|
||||
#ifndef Em1PhysicsList_h
|
||||
#define Em1PhysicsList_h 1
|
||||
|
||||
#include "G4VUserPhysicsList.hh"
|
||||
#include "globals.hh"
|
||||
|
||||
class Em1DetectorConstruction;
|
||||
class Em1PhysicsListMessenger;
|
||||
|
||||
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo....
|
||||
|
||||
class Em1PhysicsList: public G4VUserPhysicsList
|
||||
{
|
||||
public:
|
||||
Em1PhysicsList(Em1DetectorConstruction*);
|
||||
~Em1PhysicsList();
|
||||
|
||||
protected:
|
||||
// Construct particles
|
||||
void ConstructParticle();
|
||||
void ConstructBosons();
|
||||
void ConstructLeptons();
|
||||
void ConstructMesons();
|
||||
void ConstructBarions();
|
||||
|
||||
public:
|
||||
void SetCuts();
|
||||
void SetGammaCut(G4double);
|
||||
void SetElectronCut(G4double);
|
||||
void SetProtonCut(G4double);
|
||||
void SetCutsByEnergy(G4double);
|
||||
void GetRange(G4double);
|
||||
|
||||
protected:
|
||||
// Construct processes and register them
|
||||
void ConstructProcess();
|
||||
void ConstructGeneral();
|
||||
void ConstructEM();
|
||||
|
||||
private:
|
||||
Em1DetectorConstruction* pDet;
|
||||
Em1PhysicsListMessenger* pMes;
|
||||
|
||||
G4double cutForGamma;
|
||||
G4double cutForElectron;
|
||||
G4double cutForProton;
|
||||
|
||||
};
|
||||
|
||||
#endif
|
||||
|
||||
@@ -0,0 +1,44 @@
|
||||
// This code implementation is the intellectual property of
|
||||
// the GEANT4 collaboration.
|
||||
//
|
||||
// By copying, distributing or modifying the Program (or any work
|
||||
// based on the Program) you indicate your acceptance of this statement,
|
||||
// and all its terms.
|
||||
//
|
||||
// $Id: Em1PhysicsListMessenger.hh,v 1.1.4.1 1999/12/07 20:46:54 gunter Exp $
|
||||
// GEANT4 tag $Name: geant4-01-00 $
|
||||
//
|
||||
//
|
||||
|
||||
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo....
|
||||
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo....
|
||||
|
||||
#ifndef Em1PhysicsListMessenger_h
|
||||
#define Em1PhysicsListMessenger_h 1
|
||||
|
||||
#include "globals.hh"
|
||||
#include "G4UImessenger.hh"
|
||||
|
||||
class Em1PhysicsList;
|
||||
class G4UIcmdWithADoubleAndUnit;
|
||||
|
||||
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo....
|
||||
|
||||
class Em1PhysicsListMessenger: public G4UImessenger
|
||||
{
|
||||
public:
|
||||
Em1PhysicsListMessenger(Em1PhysicsList*);
|
||||
~Em1PhysicsListMessenger();
|
||||
|
||||
void SetNewValue(G4UIcommand*, G4String);
|
||||
|
||||
private:
|
||||
Em1PhysicsList* physList;
|
||||
G4UIcmdWithADoubleAndUnit* cutGCmd;
|
||||
G4UIcmdWithADoubleAndUnit* cutECmd;
|
||||
G4UIcmdWithADoubleAndUnit* cutPCmd;
|
||||
G4UIcmdWithADoubleAndUnit* rCmd;
|
||||
G4UIcmdWithADoubleAndUnit* eCmd;
|
||||
};
|
||||
|
||||
#endif
|
||||
@@ -0,0 +1,43 @@
|
||||
// This code implementation is the intellectual property of
|
||||
// the GEANT4 collaboration.
|
||||
//
|
||||
// By copying, distributing or modifying the Program (or any work
|
||||
// based on the Program) you indicate your acceptance of this statement,
|
||||
// and all its terms.
|
||||
//
|
||||
// $Id: Em1PrimaryGeneratorAction.hh,v 1.1.4.1 1999/12/07 20:46:54 gunter Exp $
|
||||
// GEANT4 tag $Name: geant4-01-00 $
|
||||
//
|
||||
//
|
||||
|
||||
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo....
|
||||
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo....
|
||||
|
||||
#ifndef Em1PrimaryGeneratorAction_h
|
||||
#define Em1PrimaryGeneratorAction_h 1
|
||||
|
||||
#include "G4VUserPrimaryGeneratorAction.hh"
|
||||
#include "globals.hh"
|
||||
|
||||
class G4ParticleGun;
|
||||
class G4Event;
|
||||
|
||||
|
||||
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo....
|
||||
|
||||
class Em1PrimaryGeneratorAction : public G4VUserPrimaryGeneratorAction
|
||||
{
|
||||
public:
|
||||
Em1PrimaryGeneratorAction();
|
||||
~Em1PrimaryGeneratorAction();
|
||||
|
||||
public:
|
||||
void GeneratePrimaries(G4Event*);
|
||||
|
||||
private:
|
||||
G4ParticleGun* particleGun; //pointer a to G4 service class
|
||||
};
|
||||
|
||||
#endif
|
||||
|
||||
|
||||
@@ -0,0 +1,69 @@
|
||||
// This code implementation is the intellectual property of
|
||||
// the GEANT4 collaboration.
|
||||
//
|
||||
// By copying, distributing or modifying the Program (or any work
|
||||
// based on the Program) you indicate your acceptance of this statement,
|
||||
// and all its terms.
|
||||
//
|
||||
// $Id: Em1RunAction.hh,v 1.1.4.1 1999/12/07 20:46:54 gunter Exp $
|
||||
// GEANT4 tag $Name: geant4-01-00 $
|
||||
//
|
||||
//
|
||||
|
||||
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo....
|
||||
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo....
|
||||
|
||||
#ifndef Em1RunAction_h
|
||||
#define Em1RunAction_h 1
|
||||
|
||||
#include "G4UserRunAction.hh"
|
||||
#include "ProcessesCount.hh"
|
||||
#include "globals.hh"
|
||||
|
||||
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo....
|
||||
|
||||
class G4Run;
|
||||
class Em1RunActionMessenger;
|
||||
class HepTupleManager;
|
||||
class HepHistogram;
|
||||
|
||||
class Em1RunAction : public G4UserRunAction
|
||||
{
|
||||
public:
|
||||
Em1RunAction();
|
||||
~Em1RunAction();
|
||||
|
||||
public:
|
||||
void BeginOfRunAction(const G4Run*);
|
||||
void EndOfRunAction(const G4Run*);
|
||||
|
||||
void CountTraks0(G4int nt) { NbOfTraks0 += nt;}
|
||||
void CountTraks1(G4int nt) { NbOfTraks1 += nt;}
|
||||
void CountSteps0(G4int ns) { NbOfSteps0 += ns;}
|
||||
void CountSteps1(G4int ns) { NbOfSteps1 += ns;}
|
||||
void CountProcesses(G4String);
|
||||
|
||||
public:
|
||||
HepHistogram* GetHisto(G4int id) {return histo[id];}
|
||||
|
||||
void SetRndmFreq(G4int val) {saveRndm = val;}
|
||||
G4int GetRndmFreq() {return saveRndm;}
|
||||
|
||||
private:
|
||||
void bookHisto();
|
||||
void cleanHisto();
|
||||
|
||||
private:
|
||||
G4int NbOfTraks0, NbOfTraks1;
|
||||
G4int NbOfSteps0, NbOfSteps1;
|
||||
ProcessesCount* ProcCounter;
|
||||
|
||||
HepTupleManager* hbookManager;
|
||||
HepHistogram* histo[3];
|
||||
|
||||
Em1RunActionMessenger* runMessenger;
|
||||
G4int saveRndm;
|
||||
};
|
||||
|
||||
#endif
|
||||
|
||||
@@ -0,0 +1,45 @@
|
||||
// This code implementation is the intellectual property of
|
||||
// the GEANT4 collaboration.
|
||||
//
|
||||
// By copying, distributing or modifying the Program (or any work
|
||||
// based on the Program) you indicate your acceptance of this statement,
|
||||
// and all its terms.
|
||||
//
|
||||
// $Id: Em1RunActionMessenger.hh,v 1.1.4.1 1999/12/07 20:46:54 gunter Exp $
|
||||
// GEANT4 tag $Name: geant4-01-00 $
|
||||
//
|
||||
//
|
||||
|
||||
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo....
|
||||
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo....
|
||||
|
||||
#ifndef Em1RunActionMessenger_h
|
||||
#define Em1RunActionMessenger_h 1
|
||||
|
||||
#include "globals.hh"
|
||||
#include "G4UImessenger.hh"
|
||||
|
||||
class Em1RunAction;
|
||||
class G4UIdirectory;
|
||||
class G4UIcmdWithAString;
|
||||
class G4UIcmdWithAnInteger;
|
||||
|
||||
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo....
|
||||
|
||||
class Em1RunActionMessenger: public G4UImessenger
|
||||
{
|
||||
public:
|
||||
Em1RunActionMessenger(Em1RunAction*);
|
||||
~Em1RunActionMessenger();
|
||||
|
||||
void SetNewValue(G4UIcommand*, G4String);
|
||||
|
||||
private:
|
||||
Em1RunAction* Em1Run;
|
||||
G4UIdirectory* RndmDir;
|
||||
G4UIcmdWithAnInteger* RndmSaveCmd;
|
||||
G4UIcmdWithAString* RndmReadCmd;
|
||||
|
||||
};
|
||||
|
||||
#endif
|
||||
@@ -0,0 +1,39 @@
|
||||
// This code implementation is the intellectual property of
|
||||
// the GEANT4 collaboration.
|
||||
//
|
||||
// By copying, distributing or modifying the Program (or any work
|
||||
// based on the Program) you indicate your acceptance of this statement,
|
||||
// and all its terms.
|
||||
//
|
||||
// $Id: Em1SteppingAction.hh,v 1.1.4.1 1999/12/07 20:46:54 gunter Exp $
|
||||
// GEANT4 tag $Name: geant4-01-00 $
|
||||
//
|
||||
//
|
||||
|
||||
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo....
|
||||
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo....
|
||||
|
||||
#ifndef Em1SteppingAction_h
|
||||
#define Em1SteppingAction_h 1
|
||||
|
||||
#include "G4UserSteppingAction.hh"
|
||||
|
||||
class Em1RunAction;
|
||||
class Em1EventAction;
|
||||
|
||||
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo....
|
||||
|
||||
class Em1SteppingAction : public G4UserSteppingAction
|
||||
{
|
||||
public:
|
||||
Em1SteppingAction(Em1RunAction*,Em1EventAction*);
|
||||
~Em1SteppingAction();
|
||||
|
||||
void UserSteppingAction(const G4Step*);
|
||||
|
||||
private:
|
||||
Em1RunAction* runAction;
|
||||
Em1EventAction* eventAction;
|
||||
};
|
||||
|
||||
#endif
|
||||
@@ -0,0 +1,34 @@
|
||||
// This code implementation is the intellectual property of
|
||||
// the GEANT4 collaboration.
|
||||
//
|
||||
// By copying, distributing or modifying the Program (or any work
|
||||
// based on the Program) you indicate your acceptance of this statement,
|
||||
// and all its terms.
|
||||
//
|
||||
// $Id: Em1TrackingAction.hh,v 1.1.4.1 1999/12/07 20:46:54 gunter Exp $
|
||||
// GEANT4 tag $Name: geant4-01-00 $
|
||||
//
|
||||
//
|
||||
|
||||
#ifndef Em1TrackingAction_h
|
||||
#define Em1TrackingAction_h 1
|
||||
|
||||
#include "G4UserTrackingAction.hh"
|
||||
|
||||
class Em1RunAction;
|
||||
|
||||
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo....
|
||||
|
||||
class Em1TrackingAction : public G4UserTrackingAction {
|
||||
|
||||
public:
|
||||
Em1TrackingAction(Em1RunAction*);
|
||||
~Em1TrackingAction() {};
|
||||
|
||||
void PostUserTrackingAction(const G4Track*);
|
||||
|
||||
private:
|
||||
Em1RunAction* runAction;
|
||||
};
|
||||
|
||||
#endif
|
||||
@@ -0,0 +1,50 @@
|
||||
// This code implementation is the intellectual property of
|
||||
// the GEANT4 collaboration.
|
||||
//
|
||||
// By copying, distributing or modifying the Program (or any work
|
||||
// based on the Program) you indicate your acceptance of this statement,
|
||||
// and all its terms.
|
||||
//
|
||||
// $Id: Em1VisManager.hh,v 1.1.4.1 1999/12/07 20:46:54 gunter Exp $
|
||||
// GEANT4 tag $Name: geant4-01-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 Em1VisManager_h
|
||||
#define Em1VisManager_h 1
|
||||
|
||||
#include "G4VisManager.hh"
|
||||
|
||||
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo....
|
||||
|
||||
class Em1VisManager: public G4VisManager {
|
||||
|
||||
public:
|
||||
|
||||
Em1VisManager ();
|
||||
|
||||
private:
|
||||
|
||||
void RegisterGraphicsSystems ();
|
||||
|
||||
};
|
||||
|
||||
#endif
|
||||
@@ -0,0 +1,61 @@
|
||||
|
||||
// This code implementation is the intellectual property of
|
||||
// the GEANT4 collaboration.
|
||||
//
|
||||
// By copying, distributing or modifying the Program (or any work
|
||||
// based on the Program) you indicate your acceptance of this statement,
|
||||
// and all its terms.
|
||||
//
|
||||
// $Id: ProcessesCount.hh,v 1.1.2.1.2.1 1999/12/07 20:46:55 gunter Exp $
|
||||
// GEANT4 tag $Name: geant4-01-00 $
|
||||
//
|
||||
//
|
||||
// -----------------------------------------------------------------
|
||||
// GEANT 4 class header file
|
||||
//
|
||||
// For information related to this code contact:
|
||||
// CERN, CN Division, ASD group
|
||||
//
|
||||
// ------------------- class ProcessesCount -----------------
|
||||
//
|
||||
// 26-10-98: first version, M.Maire
|
||||
|
||||
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo....
|
||||
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo....
|
||||
|
||||
#ifndef ProcessesCount_HH
|
||||
#define ProcessesCount_HH
|
||||
|
||||
#include "globals.hh"
|
||||
#include "g4rw/tpordvec.h"
|
||||
|
||||
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo....
|
||||
|
||||
class OneProcessCount
|
||||
{
|
||||
public:
|
||||
OneProcessCount(G4String name) {Name=name; Counter=0;};
|
||||
~OneProcessCount() {};
|
||||
G4int operator==(const OneProcessCount& right) const {return (this==&right);};
|
||||
G4int operator!=(const OneProcessCount& right) const {return (this!=&right);};
|
||||
|
||||
private:
|
||||
OneProcessCount(OneProcessCount& right) {*this= right;};
|
||||
const OneProcessCount& operator=(const OneProcessCount& right) {return right;};
|
||||
|
||||
public:
|
||||
G4String GetName() {return Name;};
|
||||
G4int GetCounter() {return Counter;};
|
||||
void Count() {Counter++;};
|
||||
|
||||
private:
|
||||
G4String Name; // process name
|
||||
G4int Counter; // process counter
|
||||
};
|
||||
|
||||
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo....
|
||||
|
||||
|
||||
typedef G4RWTPtrOrderedVector<OneProcessCount> ProcessesCount;
|
||||
|
||||
#endif
|
||||
@@ -0,0 +1,41 @@
|
||||
#
|
||||
# Macro file for the initialization phase of "TestEm1.cc"
|
||||
#
|
||||
# Sets some default verbose
|
||||
# and initializes the graphic.
|
||||
#
|
||||
/control/verbose 2
|
||||
#
|
||||
####/run/initialize
|
||||
#
|
||||
####/process/eLoss/StepFunction 0.183 170 micrometer
|
||||
####/calor/cutG 2.2 mm
|
||||
####/calor/cutE 1.4 micrometer #before beta03-00 (17.11.98)
|
||||
####/calor/cutE 6.05 micrometer #from beta03-00 (17.11.98)
|
||||
####/run/initialize
|
||||
####/run/particle/dumpCutValues
|
||||
#
|
||||
# Create empty scene ("world" is default)
|
||||
/vis/scene/create
|
||||
#
|
||||
# Add volume to scene
|
||||
/vis/scene/add/volume
|
||||
#
|
||||
# Create a scene handler for a specific graphics system
|
||||
# Edit the next line(s) to choose another graphic system
|
||||
#
|
||||
#/vis/sceneHandler/create DAWNFILE
|
||||
/vis/sceneHandler/create OGLIX
|
||||
#
|
||||
# Create a viewer
|
||||
/vis/viewer/create
|
||||
#
|
||||
# Draw scene
|
||||
/vis/scene/notifyHandlers
|
||||
#
|
||||
# for drawing the tracks
|
||||
# if too many tracks cause core dump => storeTrajectory 0
|
||||
/tracking/storeTrajectory 1
|
||||
/event/drawTracks all
|
||||
#
|
||||
/run/verbose 2
|
||||
@@ -0,0 +1,17 @@
|
||||
# $Id: run00.mac,v 1.1 1999/10/11 13:07:25 maire Exp $
|
||||
#
|
||||
# Macro file for "TestEm1.cc"
|
||||
# (can be run in batch, without graphic)
|
||||
#
|
||||
# geantino 1 GeV; 10000 evts
|
||||
#
|
||||
/control/verbose 2
|
||||
#
|
||||
/run/initialize
|
||||
#
|
||||
/run/verbose 2
|
||||
/event/drawTracks none
|
||||
#
|
||||
/gun/particle geantino
|
||||
/gun/energy 1 GeV
|
||||
/run/beamOn 10000
|
||||
@@ -0,0 +1,29 @@
|
||||
# $Id: run01.mac,v 1.1 1999/10/11 13:07:26 maire Exp $
|
||||
#
|
||||
# Macro file for "TestEm1.cc"
|
||||
# (can be run in batch, without graphic)
|
||||
#
|
||||
# Eloss only; no fluctuation; e- 1 GeV
|
||||
#
|
||||
/control/verbose 2
|
||||
#
|
||||
/run/initialize
|
||||
#
|
||||
/process/eLoss/StepFunction 0.183 170 micrometer
|
||||
/calor/cutG 95 cm
|
||||
/calor/cutE 95 cm
|
||||
/run/initialize
|
||||
/run/particle/dumpCutValues
|
||||
#
|
||||
/process/inactivate phot
|
||||
/process/inactivate compt
|
||||
/process/inactivate conv
|
||||
/process/inactivate msc
|
||||
/process/eLoss/fluct 0
|
||||
#
|
||||
/run/verbose 2
|
||||
/event/drawTracks none
|
||||
#
|
||||
/gun/particle e-
|
||||
/gun/energy 1 GeV
|
||||
/run/beamOn 100
|
||||
@@ -0,0 +1,29 @@
|
||||
# $Id: run02.mac,v 1.1 1999/10/11 13:07:26 maire Exp $
|
||||
#
|
||||
# Macro file for "TestEm1.cc"
|
||||
# (can be run in batch, without graphic)
|
||||
#
|
||||
# Eloss only; glandz fluctuations; e- 1 GeV
|
||||
#
|
||||
/control/verbose 2
|
||||
#
|
||||
/run/initialize
|
||||
#
|
||||
/process/eLoss/StepFunction 0.183 170 micrometer
|
||||
/calor/cutG 95 cm
|
||||
/calor/cutE 95 cm
|
||||
/run/initialize
|
||||
/run/particle/dumpCutValues
|
||||
#
|
||||
/process/inactivate phot
|
||||
/process/inactivate compt
|
||||
/process/inactivate conv
|
||||
/process/inactivate msc
|
||||
/process/eLoss/fluct 1
|
||||
#
|
||||
/run/verbose 2
|
||||
/event/drawTracks none
|
||||
#
|
||||
/gun/particle e-
|
||||
/gun/energy 1 GeV
|
||||
/run/beamOn 100
|
||||
@@ -0,0 +1,28 @@
|
||||
# $Id: run03.mac,v 1.1 1999/10/11 13:07:26 maire Exp $
|
||||
#
|
||||
# Macro file for "TestEm1.cc"
|
||||
# (can be run in batch, without graphic)
|
||||
#
|
||||
# Eloss+Muls only; no fluctuation; e- 10 MeV
|
||||
#
|
||||
/control/verbose 2
|
||||
#
|
||||
/run/initialize
|
||||
#
|
||||
/process/eLoss/StepFunction 0.183 170 micrometer
|
||||
/calor/cutG 95 cm
|
||||
/calor/cutE 95 cm
|
||||
/run/initialize
|
||||
/run/particle/dumpCutValues
|
||||
#
|
||||
/process/inactivate phot
|
||||
/process/inactivate compt
|
||||
/process/inactivate conv
|
||||
/process/eLoss/fluct 0
|
||||
#
|
||||
/run/verbose 2
|
||||
/event/drawTracks none
|
||||
#
|
||||
/gun/particle e-
|
||||
/gun/energy 10 MeV
|
||||
/run/beamOn 100
|
||||
@@ -0,0 +1,28 @@
|
||||
# $Id: run04.mac,v 1.1 1999/10/11 13:07:27 maire Exp $
|
||||
#
|
||||
# Macro file for "TestEm1.cc"
|
||||
# (can be run in batch, without graphic)
|
||||
#
|
||||
# full Ionisation only; e- 100 MeV
|
||||
#
|
||||
/control/verbose 2
|
||||
#
|
||||
/run/initialize
|
||||
#
|
||||
/process/eLoss/StepFunction 0.183 170 micrometer
|
||||
/calor/cutG 95 cm
|
||||
/calor/cutE 6.05 micrometer
|
||||
/run/initialize
|
||||
/run/particle/dumpCutValues
|
||||
#
|
||||
/process/inactivate phot
|
||||
/process/inactivate compt
|
||||
/process/inactivate conv
|
||||
/process/inactivate msc
|
||||
#
|
||||
/run/verbose 2
|
||||
/event/drawTracks none
|
||||
#
|
||||
/gun/particle e-
|
||||
/gun/energy 100 MeV
|
||||
/run/beamOn 100
|
||||
@@ -0,0 +1,28 @@
|
||||
# $Id: run05.mac,v 1.1 1999/10/11 13:07:27 maire Exp $
|
||||
#
|
||||
# Macro file for "TestEm1.cc"
|
||||
# (can be run in batch, without graphic)
|
||||
#
|
||||
# full Brems only; e- 1 GeV
|
||||
#
|
||||
/control/verbose 2
|
||||
#
|
||||
/run/initialize
|
||||
#
|
||||
/process/eLoss/StepFunction 0.183 170 micrometer
|
||||
/calor/cutG 2.2 mm
|
||||
/calor/cutE 95 cm
|
||||
/run/initialize
|
||||
/run/particle/dumpCutValues
|
||||
#
|
||||
/process/inactivate phot
|
||||
/process/inactivate compt
|
||||
/process/inactivate conv
|
||||
/process/inactivate msc
|
||||
#
|
||||
/run/verbose 2
|
||||
/event/drawTracks none
|
||||
#
|
||||
/gun/particle e-
|
||||
/gun/energy 1 GeV
|
||||
/run/beamOn 100
|
||||
@@ -0,0 +1,26 @@
|
||||
# $Id: run06.mac,v 1.1 1999/10/11 13:07:27 maire Exp $
|
||||
#
|
||||
# Macro file for "TestEm1.cc"
|
||||
# (can be run in batch, without graphic)
|
||||
#
|
||||
# Compton + PhotoElectricEffect; Gamma 10 Mev
|
||||
#
|
||||
/control/verbose 2
|
||||
#
|
||||
/run/initialize
|
||||
#
|
||||
/process/eLoss/StepFunction 0.183 170 micrometer
|
||||
/calor/cutG 95 cm
|
||||
/calor/cutE 95 cm
|
||||
/run/initialize
|
||||
/run/particle/dumpCutValues
|
||||
#
|
||||
/process/inactivate conv
|
||||
/process/inactivate msc
|
||||
#
|
||||
/run/verbose 2
|
||||
/event/drawTracks none
|
||||
#
|
||||
/gun/particle gamma
|
||||
/gun/energy 10 MeV
|
||||
/run/beamOn 1000
|
||||
@@ -0,0 +1,27 @@
|
||||
# $Id: run07.mac,v 1.1 1999/10/11 13:07:27 maire Exp $
|
||||
#
|
||||
# Macro file for "TestEm1.cc"
|
||||
# (can be run in batch, without graphic)
|
||||
#
|
||||
# Gamma conversion and e+ annihilation; gamma 100 MeV
|
||||
#
|
||||
/control/verbose 2
|
||||
#
|
||||
/run/initialize
|
||||
#
|
||||
/process/eLoss/StepFunction 0.183 170 micrometer
|
||||
/calor/cutG 95 cm
|
||||
/calor/cutE 30 mm
|
||||
/run/initialize
|
||||
/run/particle/dumpCutValues
|
||||
#
|
||||
/process/inactivate phot
|
||||
/process/inactivate compt
|
||||
/process/inactivate msc
|
||||
#
|
||||
/run/verbose 2
|
||||
/event/drawTracks none
|
||||
#
|
||||
/gun/particle gamma
|
||||
/gun/energy 100 MeV
|
||||
/run/beamOn 1000
|
||||
@@ -0,0 +1,24 @@
|
||||
# $Id: run08.mac,v 1.1 1999/10/11 13:07:28 maire Exp $
|
||||
#
|
||||
# Macro file for "TestEm1.cc"
|
||||
# (can be run in batch, without graphic)
|
||||
#
|
||||
# electron 100 MeV; all processes
|
||||
#
|
||||
/control/verbose 2
|
||||
#
|
||||
/run/initialize
|
||||
#
|
||||
/process/eLoss/StepFunction 0.183 170 micrometer
|
||||
/calor/cutG 2.2 mm
|
||||
####/calor/cutE 1.4 micrometer #before beta03-00 (17.11.98)
|
||||
/calor/cutE 6.05 micrometer #from beta03-00 (17.11.98)
|
||||
/run/initialize
|
||||
/run/particle/dumpCutValues
|
||||
#
|
||||
/run/verbose 2
|
||||
/event/drawTracks none
|
||||
#
|
||||
/gun/particle e-
|
||||
/gun/energy 100 MeV
|
||||
/run/beamOn 100
|
||||
@@ -0,0 +1,25 @@
|
||||
# $Id: run09.mac,v 1.1 1999/10/11 13:07:28 maire Exp $
|
||||
#
|
||||
# Macro file for "TestEm1.cc"
|
||||
# (can be run in batch, without graphic)
|
||||
#
|
||||
# electron 1 GeV; all processes
|
||||
#
|
||||
/control/verbose 2
|
||||
#
|
||||
/run/initialize
|
||||
#
|
||||
/process/eLoss/StepFunction 0.183 170 micrometer
|
||||
/calor/cutG 2.2 mm
|
||||
####/calor/cutE 1.4 micrometer #before beta03-00 (17.11.98)
|
||||
/calor/cutE 6.05 micrometer #from beta03-00 (17.11.98)
|
||||
/run/initialize
|
||||
/run/particle/dumpCutValues
|
||||
#
|
||||
/run/verbose 2
|
||||
/event/drawTracks none
|
||||
#
|
||||
/gun/particle e-
|
||||
/gun/energy 1 GeV
|
||||
/event/printModulo 10
|
||||
/run/beamOn 100
|
||||
@@ -0,0 +1,19 @@
|
||||
# $Id: run11.mac,v 1.1 1999/10/11 13:07:29 maire Exp $
|
||||
#
|
||||
# Macro file for "TestEm1.cc"
|
||||
# (can be run in batch, without graphic)
|
||||
#
|
||||
# Eloss only + muls; e- 1 GeV
|
||||
#
|
||||
/control/verbose 2
|
||||
#
|
||||
/calor/cutG 95 cm
|
||||
/calor/cutE 17 cm
|
||||
/run/initialize
|
||||
#
|
||||
/run/verbose 2
|
||||
/event/drawTracks none
|
||||
#
|
||||
/gun/particle e-
|
||||
/gun/energy 1 GeV
|
||||
/run/beamOn 1000
|
||||
@@ -0,0 +1,224 @@
|
||||
|
||||
// This code implementation is the intellectual property of
|
||||
// the GEANT4 collaboration.
|
||||
//
|
||||
// By copying, distributing or modifying the Program (or any work
|
||||
// based on the Program) you indicate your acceptance of this statement,
|
||||
// and all its terms.
|
||||
//
|
||||
// $Id: Em1DetectorConstruction.cc,v 1.1.4.1 1999/12/07 20:46:55 gunter Exp $
|
||||
// GEANT4 tag $Name: geant4-01-00 $
|
||||
//
|
||||
//
|
||||
|
||||
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo....
|
||||
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo....
|
||||
|
||||
#include "Em1DetectorConstruction.hh"
|
||||
#include "Em1DetectorMessenger.hh"
|
||||
|
||||
#include "G4Material.hh"
|
||||
#include "G4Box.hh"
|
||||
#include "G4LogicalVolume.hh"
|
||||
#include "G4PVPlacement.hh"
|
||||
#include "G4UniformMagField.hh"
|
||||
#include "G4FieldManager.hh"
|
||||
#include "G4TransportationManager.hh"
|
||||
|
||||
#include "G4RunManager.hh"
|
||||
|
||||
#include "G4VisAttributes.hh"
|
||||
#include "G4Colour.hh"
|
||||
|
||||
#include "G4UnitsTable.hh"
|
||||
#include "G4ios.hh"
|
||||
|
||||
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo....
|
||||
|
||||
Em1DetectorConstruction::Em1DetectorConstruction()
|
||||
:pBox (NULL), lBox (NULL),
|
||||
aMaterial(NULL),
|
||||
magField (NULL)
|
||||
{
|
||||
// create commands for interactive definition of the detector
|
||||
detectorMessenger = new Em1DetectorMessenger(this);
|
||||
}
|
||||
|
||||
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo....
|
||||
|
||||
Em1DetectorConstruction::~Em1DetectorConstruction()
|
||||
{ delete detectorMessenger;}
|
||||
|
||||
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo....
|
||||
|
||||
G4VPhysicalVolume* Em1DetectorConstruction::Construct()
|
||||
{
|
||||
DefineMaterials();
|
||||
BoxSize = 20*m;
|
||||
return ConstructVolumes();
|
||||
}
|
||||
|
||||
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo....
|
||||
|
||||
void Em1DetectorConstruction::DefineMaterials()
|
||||
{
|
||||
//This function illustrates the possible ways to define materials
|
||||
|
||||
G4String name, symbol; //a=mass of a mole;
|
||||
G4double a, z, density; //z=mean number of protons;
|
||||
|
||||
G4int ncomponents, natoms;
|
||||
G4double fractionmass;
|
||||
|
||||
//
|
||||
// define Elements
|
||||
//
|
||||
|
||||
a = 1.01*g/mole;
|
||||
G4Element* H = new G4Element(name="Hydrogen",symbol="H" , z= 1., a);
|
||||
|
||||
a = 14.01*g/mole;
|
||||
G4Element* N = new G4Element(name="Nitrogen",symbol="N" , z= 7., a);
|
||||
|
||||
a = 16.00*g/mole;
|
||||
G4Element* O = new G4Element(name="Oxygen" ,symbol="O" , z= 8., a);
|
||||
|
||||
//
|
||||
// define materials
|
||||
//
|
||||
|
||||
density = 1.290*mg/cm3;
|
||||
G4Material* Air = new G4Material(name="Air" , density, ncomponents=2);
|
||||
Air->AddElement(N, fractionmass=70.*perCent);
|
||||
Air->AddElement(O, fractionmass=30.*perCent);
|
||||
|
||||
density = 70.8*mg/cm3;
|
||||
G4Material* H2l = new G4Material(name="H2liquid", density, ncomponents=1);
|
||||
H2l->AddElement(H, fractionmass=1.);
|
||||
|
||||
density = 1.000*g/cm3;
|
||||
G4Material* H2O = new G4Material(name="Water", density, ncomponents=2);
|
||||
H2O->AddElement(H, natoms=2);
|
||||
H2O->AddElement(O, natoms=1);
|
||||
|
||||
density = 1.390*g/cm3;
|
||||
a = 39.95*g/mole;
|
||||
G4Material* lAr = new G4Material(name="liquidArgon", z=18., a, density);
|
||||
|
||||
density = 2.700*g/cm3;
|
||||
a = 26.98*g/mole;
|
||||
G4Material* Al = new G4Material(name="Aluminium" , z=13., a, density);
|
||||
|
||||
density = 7.870*g/cm3;
|
||||
a = 55.85*g/mole;
|
||||
G4Material* Fe = new G4Material(name="Iron" , z=26., a, density);
|
||||
|
||||
density = 11.35*g/cm3;
|
||||
a = 207.19*g/mole;
|
||||
G4Material* Pb = new G4Material(name="Lead" , z=82., a, density);
|
||||
|
||||
density = 18.95*g/cm3;
|
||||
a = 238.03*g/mole;
|
||||
G4Material* U = new G4Material(name="Uranium" , z=82., a, density);
|
||||
|
||||
|
||||
G4cout << *(G4Material::GetMaterialTable()) << endl;
|
||||
|
||||
//default materials of the calorimeter
|
||||
aMaterial = Al;
|
||||
}
|
||||
|
||||
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo....
|
||||
|
||||
G4VPhysicalVolume* Em1DetectorConstruction::ConstructVolumes()
|
||||
{
|
||||
G4Box*
|
||||
sBox = new G4Box("Container", //its name
|
||||
BoxSize/2,BoxSize/2,BoxSize/2); //its dimensions
|
||||
|
||||
lBox = new G4LogicalVolume(sBox, //its shape
|
||||
aMaterial, //its material
|
||||
"Container"); //its name
|
||||
|
||||
pBox = new G4PVPlacement(0, //no rotation
|
||||
G4ThreeVector(), //at (0,0,0)
|
||||
"Container", //its name
|
||||
lBox, //its logical volume
|
||||
NULL, //its mother volume
|
||||
false, //no boolean operation
|
||||
0); //copy number
|
||||
|
||||
//
|
||||
// Visualization attributes
|
||||
//
|
||||
|
||||
G4VisAttributes* visAtt= new G4VisAttributes(G4Colour(1.0,1.0,1.0));
|
||||
visAtt->SetVisibility(true);
|
||||
lBox->SetVisAttributes(visAtt);
|
||||
|
||||
//
|
||||
//always return the root volume
|
||||
//
|
||||
|
||||
PrintParameters();
|
||||
return pBox;
|
||||
}
|
||||
|
||||
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo....
|
||||
|
||||
void Em1DetectorConstruction::PrintParameters()
|
||||
{
|
||||
G4cout << "\n The Box is " << G4BestUnit(BoxSize,"Length")
|
||||
<< " of " << aMaterial->GetName() << endl;
|
||||
}
|
||||
|
||||
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo....
|
||||
|
||||
void Em1DetectorConstruction::SetMaterial(G4String materialChoice)
|
||||
{
|
||||
// search the material by its name
|
||||
G4Material* pttoMaterial = G4Material::GetMaterial(materialChoice);
|
||||
if (pttoMaterial)
|
||||
{aMaterial = pttoMaterial;
|
||||
lBox->SetMaterial(aMaterial);
|
||||
}
|
||||
}
|
||||
|
||||
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo....
|
||||
|
||||
void Em1DetectorConstruction::SetSize(G4double value)
|
||||
{
|
||||
BoxSize = value;
|
||||
}
|
||||
|
||||
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo....
|
||||
|
||||
void Em1DetectorConstruction::SetMagField(G4double fieldValue)
|
||||
{
|
||||
//apply a global uniform magnetic field along Z axis
|
||||
G4FieldManager* fieldMgr
|
||||
= G4TransportationManager::GetTransportationManager()->GetFieldManager();
|
||||
|
||||
if (magField) delete magField; //delete the existing magn field
|
||||
|
||||
if (fieldValue!=0.) // create a new one if non nul
|
||||
{
|
||||
magField = new G4UniformMagField(G4ThreeVector(0.,0.,fieldValue));
|
||||
fieldMgr->SetDetectorField(magField);
|
||||
fieldMgr->CreateChordFinder(magField);
|
||||
}
|
||||
else
|
||||
{
|
||||
magField = NULL;
|
||||
fieldMgr->SetDetectorField(magField);
|
||||
}
|
||||
}
|
||||
|
||||
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo....
|
||||
|
||||
void Em1DetectorConstruction::UpdateGeometry()
|
||||
{
|
||||
G4RunManager::GetRunManager()->DefineWorldVolume(ConstructVolumes());
|
||||
}
|
||||
|
||||
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo....
|
||||
@@ -0,0 +1,86 @@
|
||||
// This code implementation is the intellectual property of
|
||||
// the GEANT4 collaboration.
|
||||
//
|
||||
// By copying, distributing or modifying the Program (or any work
|
||||
// based on the Program) you indicate your acceptance of this statement,
|
||||
// and all its terms.
|
||||
//
|
||||
// $Id: Em1DetectorMessenger.cc,v 1.1.4.1 1999/12/07 20:46:55 gunter Exp $
|
||||
// GEANT4 tag $Name: geant4-01-00 $
|
||||
//
|
||||
//
|
||||
|
||||
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo....
|
||||
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo....
|
||||
|
||||
#include "Em1DetectorMessenger.hh"
|
||||
|
||||
#include "Em1DetectorConstruction.hh"
|
||||
#include "G4UIdirectory.hh"
|
||||
#include "G4UIcmdWithAString.hh"
|
||||
#include "G4UIcmdWithADoubleAndUnit.hh"
|
||||
#include "G4UIcmdWithoutParameter.hh"
|
||||
|
||||
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo....
|
||||
|
||||
Em1DetectorMessenger::Em1DetectorMessenger(Em1DetectorConstruction * Em1Det)
|
||||
:Em1Detector(Em1Det)
|
||||
{
|
||||
Em1detDir = new G4UIdirectory("/calor/");
|
||||
Em1detDir->SetGuidance("Em1 detector control.");
|
||||
|
||||
MaterCmd = new G4UIcmdWithAString("/calor/setMat",this);
|
||||
MaterCmd->SetGuidance("Select material of the box.");
|
||||
MaterCmd->SetParameterName("choice",false);
|
||||
MaterCmd->AvailableForStates(Idle);
|
||||
|
||||
SizeCmd = new G4UIcmdWithADoubleAndUnit("/calor/setSize",this);
|
||||
SizeCmd->SetGuidance("Set size of the box");
|
||||
SizeCmd->SetParameterName("Size",false);
|
||||
SizeCmd->SetRange("Size>0.");
|
||||
SizeCmd->SetUnitCategory("Length");
|
||||
SizeCmd->AvailableForStates(Idle);
|
||||
|
||||
MagFieldCmd = new G4UIcmdWithADoubleAndUnit("/calor/setField",this);
|
||||
MagFieldCmd->SetGuidance("Define magnetic field.");
|
||||
MagFieldCmd->SetGuidance("Magnetic field will be in Z direction.");
|
||||
MagFieldCmd->SetParameterName("Bz",false);
|
||||
MagFieldCmd->SetUnitCategory("Magnetic flux density");
|
||||
MagFieldCmd->AvailableForStates(Idle);
|
||||
|
||||
UpdateCmd = new G4UIcmdWithoutParameter("/calor/update",this);
|
||||
UpdateCmd->SetGuidance("Update calorimeter geometry.");
|
||||
UpdateCmd->SetGuidance("This command MUST be applied before \"beamOn\" ");
|
||||
UpdateCmd->SetGuidance("if you changed geometrical value(s).");
|
||||
UpdateCmd->AvailableForStates(Idle);
|
||||
}
|
||||
|
||||
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo....
|
||||
|
||||
Em1DetectorMessenger::~Em1DetectorMessenger()
|
||||
{
|
||||
delete MaterCmd;
|
||||
delete SizeCmd;
|
||||
delete MagFieldCmd;
|
||||
delete UpdateCmd;
|
||||
delete Em1detDir;
|
||||
}
|
||||
|
||||
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo....
|
||||
|
||||
void Em1DetectorMessenger::SetNewValue(G4UIcommand* command,G4String newValue)
|
||||
{
|
||||
if( command == MaterCmd )
|
||||
{ Em1Detector->SetMaterial(newValue);}
|
||||
|
||||
if( command == SizeCmd )
|
||||
{ Em1Detector->SetSize(SizeCmd->GetNewDoubleValue(newValue));}
|
||||
|
||||
if( command == MagFieldCmd )
|
||||
{ Em1Detector->SetMagField(MagFieldCmd->GetNewDoubleValue(newValue));}
|
||||
|
||||
if( command == UpdateCmd )
|
||||
{ Em1Detector->UpdateGeometry(); }
|
||||
}
|
||||
|
||||
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo....
|
||||
@@ -0,0 +1,92 @@
|
||||
// This code implementation is the intellectual property of
|
||||
// the GEANT4 collaboration.
|
||||
//
|
||||
// By copying, distributing or modifying the Program (or any work
|
||||
// based on the Program) you indicate your acceptance of this statement,
|
||||
// and all its terms.
|
||||
//
|
||||
// $Id: Em1EventAction.cc,v 1.1.4.1 1999/12/07 20:46:55 gunter Exp $
|
||||
// GEANT4 tag $Name: geant4-01-00 $
|
||||
//
|
||||
//
|
||||
|
||||
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo....
|
||||
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo....
|
||||
|
||||
#include "Em1EventAction.hh"
|
||||
|
||||
#include "Em1RunAction.hh"
|
||||
#include "Em1EventActionMessenger.hh"
|
||||
|
||||
#include "G4Event.hh"
|
||||
#include "G4EventManager.hh"
|
||||
#include "G4TrajectoryContainer.hh"
|
||||
#include "G4Trajectory.hh"
|
||||
#include "G4VVisManager.hh"
|
||||
#include "G4ios.hh"
|
||||
#include "G4UnitsTable.hh"
|
||||
#include "Randomize.hh"
|
||||
|
||||
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo....
|
||||
|
||||
Em1EventAction::Em1EventAction(Em1RunAction* run)
|
||||
:Em1Run(run),drawFlag("all"),printModulo(10000),eventMessenger(NULL)
|
||||
{
|
||||
eventMessenger = new Em1EventActionMessenger(this);
|
||||
}
|
||||
|
||||
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo....
|
||||
|
||||
Em1EventAction::~Em1EventAction()
|
||||
{
|
||||
delete eventMessenger;
|
||||
}
|
||||
|
||||
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo....
|
||||
|
||||
void Em1EventAction::BeginOfEventAction(const G4Event* evt)
|
||||
{
|
||||
G4int evtNb = evt->GetEventID();
|
||||
if (evtNb%printModulo == 0)
|
||||
G4cout << "\n---> Begin of Event: " << evtNb << endl;
|
||||
|
||||
TotalEnergyDeposit = 0.;}
|
||||
|
||||
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo....
|
||||
|
||||
void Em1EventAction::EndOfEventAction(const G4Event* evt)
|
||||
{
|
||||
if (drawFlag != "none") G4cout << " Energy deposit: "
|
||||
<< G4BestUnit(TotalEnergyDeposit,"Energy")
|
||||
<< endl;
|
||||
|
||||
if (G4VVisManager::GetConcreteInstance())
|
||||
{
|
||||
const G4Event* evt = fpEventManager->GetConstCurrentEvent();
|
||||
G4TrajectoryContainer* trajectoryContainer = evt->GetTrajectoryContainer();
|
||||
G4int n_trajectories = 0;
|
||||
if (trajectoryContainer) n_trajectories = trajectoryContainer->entries();
|
||||
for(G4int i=0; i<n_trajectories; i++)
|
||||
{ G4Trajectory* trj = (G4Trajectory*)((*(evt->GetTrajectoryContainer()))[i]);
|
||||
if (drawFlag == "all") trj->DrawTrajectory(50);
|
||||
else if ((drawFlag == "charged")&&(trj->GetCharge() != 0.))
|
||||
trj->DrawTrajectory(50);
|
||||
}
|
||||
}
|
||||
|
||||
//save rndm status
|
||||
if (Em1Run->GetRndmFreq() == 2)
|
||||
{
|
||||
HepRandom::saveEngineStatus("endOfEvent.rndm");
|
||||
G4int evtNb = evt->GetEventID();
|
||||
if (evtNb%printModulo == 0)
|
||||
{
|
||||
G4cout << "\n---> End of Event: " << evtNb << endl;
|
||||
HepRandom::showEngineStatus();
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo....
|
||||
|
||||
|
||||
@@ -0,0 +1,63 @@
|
||||
// This code implementation is the intellectual property of
|
||||
// the GEANT4 collaboration.
|
||||
//
|
||||
// By copying, distributing or modifying the Program (or any work
|
||||
// based on the Program) you indicate your acceptance of this statement,
|
||||
// and all its terms.
|
||||
//
|
||||
// $Id: Em1EventActionMessenger.cc,v 1.1.4.1 1999/12/07 20:46:55 gunter Exp $
|
||||
// GEANT4 tag $Name: geant4-01-00 $
|
||||
//
|
||||
//
|
||||
|
||||
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo....
|
||||
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo....
|
||||
|
||||
#include "Em1EventActionMessenger.hh"
|
||||
|
||||
#include "Em1EventAction.hh"
|
||||
#include "G4UIcmdWithAString.hh"
|
||||
#include "G4UIcmdWithAnInteger.hh"
|
||||
#include "globals.hh"
|
||||
|
||||
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo....
|
||||
|
||||
Em1EventActionMessenger::Em1EventActionMessenger(Em1EventAction* EvAct)
|
||||
:eventAction(EvAct)
|
||||
{
|
||||
DrawCmd = new G4UIcmdWithAString("/event/drawTracks",this);
|
||||
DrawCmd->SetGuidance("Draw the tracks in the event");
|
||||
DrawCmd->SetGuidance(" Choice : none,charged, all");
|
||||
DrawCmd->SetParameterName("choice",true);
|
||||
DrawCmd->SetDefaultValue("all");
|
||||
DrawCmd->SetCandidates("none charged all");
|
||||
DrawCmd->AvailableForStates(Idle);
|
||||
|
||||
PrintCmd = new G4UIcmdWithAnInteger("/event/printModulo",this);
|
||||
PrintCmd->SetGuidance("Print events modulo n");
|
||||
PrintCmd->SetParameterName("EventNb",false);
|
||||
PrintCmd->SetRange("EventNb>0");
|
||||
PrintCmd->AvailableForStates(Idle);
|
||||
}
|
||||
|
||||
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo....
|
||||
|
||||
Em1EventActionMessenger::~Em1EventActionMessenger()
|
||||
{
|
||||
delete DrawCmd;
|
||||
delete PrintCmd;
|
||||
}
|
||||
|
||||
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo....
|
||||
|
||||
void Em1EventActionMessenger::SetNewValue(G4UIcommand * command,G4String newValue)
|
||||
{
|
||||
if(command == DrawCmd)
|
||||
{eventAction->SetDrawFlag(newValue);}
|
||||
|
||||
if(command == PrintCmd)
|
||||
{eventAction->SetPrintModulo(PrintCmd->GetNewIntValue(newValue));}
|
||||
|
||||
}
|
||||
|
||||
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo....
|
||||
@@ -0,0 +1,325 @@
|
||||
// This code implementation is the intellectual property of
|
||||
// the GEANT4 collaboration.
|
||||
//
|
||||
// By copying, distributing or modifying the Program (or any work
|
||||
// based on the Program) you indicate your acceptance of this statement,
|
||||
// and all its terms.
|
||||
//
|
||||
// $Id: Em1PhysicsList.cc,v 1.1.4.1 1999/12/07 20:46:55 gunter Exp $
|
||||
// GEANT4 tag $Name: geant4-01-00 $
|
||||
//
|
||||
//
|
||||
|
||||
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo....
|
||||
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo....
|
||||
|
||||
#include "Em1PhysicsList.hh"
|
||||
|
||||
#include "G4ParticleDefinition.hh"
|
||||
#include "G4ParticleWithCuts.hh"
|
||||
#include "G4ProcessManager.hh"
|
||||
#include "G4ParticleTypes.hh"
|
||||
#include "G4ParticleTable.hh"
|
||||
#include "G4ios.hh"
|
||||
|
||||
#include "G4ParticleTable.hh"
|
||||
#include "G4EnergyLossTables.hh"
|
||||
#include "G4Material.hh"
|
||||
#include "G4RunManager.hh"
|
||||
#include "Em1DetectorConstruction.hh"
|
||||
#include "Em1PhysicsListMessenger.hh"
|
||||
|
||||
#include "G4UImanager.hh"
|
||||
|
||||
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo....
|
||||
|
||||
Em1PhysicsList::Em1PhysicsList(Em1DetectorConstruction* p)
|
||||
: G4VUserPhysicsList()
|
||||
{
|
||||
pDet = p;
|
||||
|
||||
defaultCutValue = 1.*mm;
|
||||
cutForGamma = defaultCutValue;
|
||||
cutForElectron = defaultCutValue;
|
||||
cutForProton = defaultCutValue;
|
||||
|
||||
SetVerboseLevel(1);
|
||||
pMes = new Em1PhysicsListMessenger(this);
|
||||
}
|
||||
|
||||
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo....
|
||||
|
||||
Em1PhysicsList::~Em1PhysicsList()
|
||||
{ delete pMes; }
|
||||
|
||||
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo....
|
||||
|
||||
void Em1PhysicsList::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();
|
||||
}
|
||||
|
||||
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo....
|
||||
|
||||
void Em1PhysicsList::ConstructBosons()
|
||||
{
|
||||
// pseudo-particles
|
||||
G4Geantino::GeantinoDefinition();
|
||||
G4ChargedGeantino::ChargedGeantinoDefinition();
|
||||
|
||||
// gamma
|
||||
G4Gamma::GammaDefinition();
|
||||
|
||||
// optical photon
|
||||
G4OpticalPhoton::OpticalPhotonDefinition();
|
||||
}
|
||||
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo....
|
||||
|
||||
void Em1PhysicsList::ConstructLeptons()
|
||||
{
|
||||
// leptons
|
||||
G4Electron::ElectronDefinition();
|
||||
G4Positron::PositronDefinition();
|
||||
G4MuonPlus::MuonPlusDefinition();
|
||||
G4MuonMinus::MuonMinusDefinition();
|
||||
|
||||
G4NeutrinoE::NeutrinoEDefinition();
|
||||
G4AntiNeutrinoE::AntiNeutrinoEDefinition();
|
||||
G4NeutrinoMu::NeutrinoMuDefinition();
|
||||
G4AntiNeutrinoMu::AntiNeutrinoMuDefinition();
|
||||
}
|
||||
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo....
|
||||
|
||||
void Em1PhysicsList::ConstructMesons()
|
||||
{
|
||||
// mesons
|
||||
G4PionPlus::PionPlusDefinition();
|
||||
G4PionMinus::PionMinusDefinition();
|
||||
G4PionZero::PionZeroDefinition();
|
||||
G4Eta::EtaDefinition();
|
||||
G4EtaPrime::EtaPrimeDefinition();
|
||||
G4RhoZero::RhoZeroDefinition();
|
||||
G4KaonPlus::KaonPlusDefinition();
|
||||
G4KaonMinus::KaonMinusDefinition();
|
||||
G4KaonZero::KaonZeroDefinition();
|
||||
G4AntiKaonZero::AntiKaonZeroDefinition();
|
||||
G4KaonZeroLong::KaonZeroLongDefinition();
|
||||
G4KaonZeroShort::KaonZeroShortDefinition();
|
||||
}
|
||||
|
||||
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo....
|
||||
|
||||
void Em1PhysicsList::ConstructBarions()
|
||||
{
|
||||
// barions
|
||||
G4Proton::ProtonDefinition();
|
||||
G4AntiProton::AntiProtonDefinition();
|
||||
G4Neutron::NeutronDefinition();
|
||||
G4AntiNeutron::AntiNeutronDefinition();
|
||||
}
|
||||
|
||||
|
||||
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo....
|
||||
|
||||
void Em1PhysicsList::ConstructProcess()
|
||||
{
|
||||
AddTransportation();
|
||||
ConstructEM();
|
||||
ConstructGeneral();
|
||||
}
|
||||
|
||||
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo....
|
||||
|
||||
#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"
|
||||
|
||||
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo....
|
||||
|
||||
void Em1PhysicsList::ConstructEM()
|
||||
{
|
||||
theParticleIterator->reset();
|
||||
while( (*theParticleIterator)() ){
|
||||
G4ParticleDefinition* particle = theParticleIterator->value();
|
||||
G4ProcessManager* pmanager = particle->GetProcessManager();
|
||||
G4String particleName = particle->GetParticleName();
|
||||
|
||||
if (particleName == "gamma") {
|
||||
// gamma
|
||||
pmanager->AddDiscreteProcess(new G4PhotoElectricEffect);
|
||||
pmanager->AddDiscreteProcess(new G4ComptonScattering);
|
||||
pmanager->AddDiscreteProcess(new G4GammaConversion);
|
||||
|
||||
} else if (particleName == "e-") {
|
||||
//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
|
||||
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
|
||||
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->IsShortLived()) &&
|
||||
(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);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo....
|
||||
|
||||
#include "G4Decay.hh"
|
||||
|
||||
void Em1PhysicsList::ConstructGeneral()
|
||||
{
|
||||
// Add Decay Process
|
||||
G4Decay* theDecayProcess = new G4Decay();
|
||||
theParticleIterator->reset();
|
||||
while ((*theParticleIterator)()){
|
||||
G4ParticleDefinition* particle = theParticleIterator->value();
|
||||
G4ProcessManager* pmanager = particle->GetProcessManager();
|
||||
if (theDecayProcess->IsApplicable(*particle)) {
|
||||
pmanager ->AddProcess(theDecayProcess);
|
||||
// set ordering for PostStepDoIt and AtRestDoIt
|
||||
pmanager ->SetProcessOrdering(theDecayProcess, idxPostStep);
|
||||
pmanager ->SetProcessOrdering(theDecayProcess, idxAtRest);
|
||||
}
|
||||
}
|
||||
}
|
||||
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo....
|
||||
|
||||
void Em1PhysicsList::SetCuts()
|
||||
{
|
||||
if (verboseLevel >0){
|
||||
G4cout << "Em1PhysicsList::SetCuts:";
|
||||
G4cout << "CutLength : " << defaultCutValue/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(cutForGamma, "gamma");
|
||||
SetCutValue(cutForElectron, "e-");
|
||||
SetCutValue(cutForElectron, "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(cutForProton, "proton");
|
||||
SetCutValue(cutForProton, "anti_proton");
|
||||
|
||||
SetCutValueForOthers(defaultCutValue);
|
||||
|
||||
if (verboseLevel>0) DumpCutValuesTable();
|
||||
}
|
||||
|
||||
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo....
|
||||
|
||||
void Em1PhysicsList::SetGammaCut(G4double val)
|
||||
{
|
||||
ResetCuts();
|
||||
cutForGamma = val;
|
||||
}
|
||||
|
||||
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo....
|
||||
|
||||
void Em1PhysicsList::SetElectronCut(G4double val)
|
||||
{
|
||||
ResetCuts();
|
||||
cutForElectron = val;
|
||||
}
|
||||
|
||||
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo....
|
||||
|
||||
void Em1PhysicsList::SetProtonCut(G4double val)
|
||||
{
|
||||
ResetCuts();
|
||||
cutForProton = val;
|
||||
}
|
||||
|
||||
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo....
|
||||
|
||||
void Em1PhysicsList::SetCutsByEnergy(G4double val)
|
||||
{
|
||||
G4ParticleTable* theParticleTable = G4ParticleTable::GetParticleTable();
|
||||
G4Material* currMat = pDet->GetMaterial();
|
||||
|
||||
// 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
|
||||
G4ParticleDefinition* part;
|
||||
G4double cut;
|
||||
|
||||
part = theParticleTable->FindParticle("e-");
|
||||
cut = G4EnergyLossTables::GetRange(part,val,currMat);
|
||||
SetCutValue(cut, "e-");
|
||||
|
||||
part = theParticleTable->FindParticle("e+");
|
||||
cut = G4EnergyLossTables::GetRange(part,val,currMat);
|
||||
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
|
||||
part = theParticleTable->FindParticle("proton");
|
||||
cut = G4EnergyLossTables::GetRange(part,val,currMat);
|
||||
SetCutValue(cut, "proton");
|
||||
|
||||
part = theParticleTable->FindParticle("anti_proton");
|
||||
cut = G4EnergyLossTables::GetRange(part,val,currMat);
|
||||
SetCutValue(cut, "anti_proton");
|
||||
|
||||
SetCutValueForOthers(cut);
|
||||
}
|
||||
|
||||
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo....
|
||||
|
||||
void Em1PhysicsList::GetRange(G4double val)
|
||||
{
|
||||
G4ParticleTable* theParticleTable = G4ParticleTable::GetParticleTable();
|
||||
G4Material* currMat = pDet->GetMaterial();
|
||||
|
||||
G4ParticleDefinition* part;
|
||||
G4double cut;
|
||||
part = theParticleTable->FindParticle("e-");
|
||||
cut = G4EnergyLossTables::GetRange(part,val,currMat);
|
||||
G4cout << "material : " << currMat->GetName() << endl;
|
||||
G4cout << "particle : " << part->GetParticleName() << endl;
|
||||
G4cout << "energy : " << val / keV << " (keV)" << endl;
|
||||
G4cout << "range : " << cut / mm << " (mm)" << endl;
|
||||
}
|
||||
|
||||
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo....
|
||||
|
||||
|
||||
@@ -0,0 +1,91 @@
|
||||
// This code implementation is the intellectual property of
|
||||
// the GEANT4 collaboration.
|
||||
//
|
||||
// By copying, distributing or modifying the Program (or any work
|
||||
// based on the Program) you indicate your acceptance of this statement,
|
||||
// and all its terms.
|
||||
//
|
||||
// $Id: Em1PhysicsListMessenger.cc,v 1.1.4.1 1999/12/07 20:46:55 gunter Exp $
|
||||
// GEANT4 tag $Name: geant4-01-00 $
|
||||
//
|
||||
//
|
||||
|
||||
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo....
|
||||
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo....
|
||||
|
||||
#include "Em1PhysicsListMessenger.hh"
|
||||
|
||||
#include "Em1PhysicsList.hh"
|
||||
#include "G4UIcmdWithADoubleAndUnit.hh"
|
||||
#include "globals.hh"
|
||||
|
||||
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo....
|
||||
|
||||
Em1PhysicsListMessenger::Em1PhysicsListMessenger(Em1PhysicsList* EvAct)
|
||||
:physList(EvAct)
|
||||
{
|
||||
cutGCmd = new G4UIcmdWithADoubleAndUnit("/calor/cutG",this);
|
||||
cutGCmd->SetGuidance("Set cut values by RANGE for Gamma.");
|
||||
cutGCmd->SetParameterName("range",false);
|
||||
cutGCmd->SetRange("range>0.");
|
||||
cutGCmd->SetUnitCategory("Length");
|
||||
cutGCmd->AvailableForStates(Idle);
|
||||
|
||||
cutECmd = new G4UIcmdWithADoubleAndUnit("/calor/cutE",this);
|
||||
cutECmd->SetGuidance("Set cut values by RANGE for e- e+.");
|
||||
cutECmd->SetParameterName("range",false);
|
||||
cutECmd->SetRange("range>0.");
|
||||
cutECmd->SetUnitCategory("Length");
|
||||
cutECmd->AvailableForStates(Idle);
|
||||
|
||||
cutPCmd = new G4UIcmdWithADoubleAndUnit("/calor/cutP",this);
|
||||
cutPCmd->SetGuidance("Set cut values by RANGE for proton and others.");
|
||||
cutPCmd->SetParameterName("range",false);
|
||||
cutPCmd->SetRange("range>0.");
|
||||
cutPCmd->SetUnitCategory("Length");
|
||||
cutPCmd->AvailableForStates(Idle);
|
||||
|
||||
eCmd = new G4UIcmdWithADoubleAndUnit("/calor/cutEnergy",this);
|
||||
eCmd->SetGuidance("Set cut values by ENERGY for charged particles.");
|
||||
eCmd->SetParameterName("energy",false);
|
||||
eCmd->SetRange("energy>0.");
|
||||
eCmd->SetUnitCategory("Energy");
|
||||
eCmd->AvailableForStates(Idle);
|
||||
|
||||
rCmd = new G4UIcmdWithADoubleAndUnit("/calor/range",this);
|
||||
rCmd->SetGuidance("Display the RANGE of Electron for the current material.");
|
||||
rCmd->SetParameterName("energy",false);
|
||||
rCmd->SetRange("energy>0.");
|
||||
rCmd->SetUnitCategory("Energy");
|
||||
rCmd->AvailableForStates(Idle);
|
||||
}
|
||||
|
||||
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo....
|
||||
|
||||
Em1PhysicsListMessenger::~Em1PhysicsListMessenger()
|
||||
{
|
||||
delete cutGCmd;
|
||||
delete cutECmd;
|
||||
delete cutPCmd;
|
||||
delete rCmd;
|
||||
delete eCmd;
|
||||
}
|
||||
|
||||
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo....
|
||||
|
||||
void Em1PhysicsListMessenger::SetNewValue(G4UIcommand * command,G4String newValue)
|
||||
{
|
||||
if(command == cutGCmd)
|
||||
{physList->SetGammaCut(cutGCmd->GetNewDoubleValue(newValue));}
|
||||
if(command == cutECmd)
|
||||
{physList->SetElectronCut(eCmd->GetNewDoubleValue(newValue));}
|
||||
if(command == cutPCmd)
|
||||
{physList->SetProtonCut(eCmd->GetNewDoubleValue(newValue));}
|
||||
if(command == eCmd)
|
||||
{physList->SetCutsByEnergy(cutECmd->GetNewDoubleValue(newValue));}
|
||||
if(command == rCmd)
|
||||
{physList->GetRange(rCmd->GetNewDoubleValue(newValue));}
|
||||
|
||||
}
|
||||
|
||||
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo....
|
||||
@@ -0,0 +1,55 @@
|
||||
// This code implementation is the intellectual property of
|
||||
// the GEANT4 collaboration.
|
||||
//
|
||||
// By copying, distributing or modifying the Program (or any work
|
||||
// based on the Program) you indicate your acceptance of this statement,
|
||||
// and all its terms.
|
||||
//
|
||||
// $Id: Em1PrimaryGeneratorAction.cc,v 1.1.4.1 1999/12/07 20:46:55 gunter Exp $
|
||||
// GEANT4 tag $Name: geant4-01-00 $
|
||||
//
|
||||
//
|
||||
|
||||
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo....
|
||||
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo....
|
||||
|
||||
#include "Em1PrimaryGeneratorAction.hh"
|
||||
|
||||
#include "G4Event.hh"
|
||||
#include "G4ParticleGun.hh"
|
||||
#include "G4ParticleTable.hh"
|
||||
#include "G4ParticleDefinition.hh"
|
||||
|
||||
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo....
|
||||
|
||||
Em1PrimaryGeneratorAction::Em1PrimaryGeneratorAction()
|
||||
{
|
||||
G4int n_particle = 1;
|
||||
particleGun = new G4ParticleGun(n_particle);
|
||||
|
||||
// default particle kinematic
|
||||
|
||||
G4ParticleDefinition* particle
|
||||
= G4ParticleTable::GetParticleTable()->FindParticle("e-");
|
||||
particleGun->SetParticleDefinition(particle);
|
||||
particleGun->SetParticleMomentumDirection(G4ThreeVector(1.,0.,0.));
|
||||
particleGun->SetParticleEnergy(100*MeV);
|
||||
particleGun->SetParticlePosition(G4ThreeVector(0.*cm,0.*cm,0.*cm));
|
||||
}
|
||||
|
||||
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo....
|
||||
|
||||
Em1PrimaryGeneratorAction::~Em1PrimaryGeneratorAction()
|
||||
{
|
||||
delete particleGun;
|
||||
}
|
||||
|
||||
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo....
|
||||
|
||||
void Em1PrimaryGeneratorAction::GeneratePrimaries(G4Event* anEvent)
|
||||
{
|
||||
particleGun->GeneratePrimaryVertex(anEvent);
|
||||
}
|
||||
|
||||
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo....
|
||||
|
||||
@@ -0,0 +1,153 @@
|
||||
// This code implementation is the intellectual property of
|
||||
// the GEANT4 collaboration.
|
||||
//
|
||||
// By copying, distributing or modifying the Program (or any work
|
||||
// based on the Program) you indicate your acceptance of this statement,
|
||||
// and all its terms.
|
||||
//
|
||||
// $Id: Em1RunAction.cc,v 1.1.4.1 1999/12/07 20:46:55 gunter Exp $
|
||||
// GEANT4 tag $Name: geant4-01-00 $
|
||||
//
|
||||
//
|
||||
|
||||
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo....
|
||||
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo....
|
||||
|
||||
#include "Em1RunAction.hh"
|
||||
#include "Em1RunActionMessenger.hh"
|
||||
|
||||
#include "G4Run.hh"
|
||||
#include "G4UImanager.hh"
|
||||
#include "G4VVisManager.hh"
|
||||
#include "G4ios.hh"
|
||||
#include <iomanip.h>
|
||||
|
||||
#include "Randomize.hh"
|
||||
#include "CLHEP/Hist/HBookFile.h"
|
||||
|
||||
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo....
|
||||
|
||||
Em1RunAction::Em1RunAction()
|
||||
:hbookManager(NULL)
|
||||
{runMessenger = new Em1RunActionMessenger(this);
|
||||
saveRndm = 1;
|
||||
}
|
||||
|
||||
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo....
|
||||
|
||||
Em1RunAction::~Em1RunAction()
|
||||
{cleanHisto();
|
||||
delete runMessenger;
|
||||
}
|
||||
|
||||
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo....
|
||||
|
||||
void Em1RunAction::bookHisto()
|
||||
{
|
||||
hbookManager = new HBookFile("testem1.histo", 68);
|
||||
|
||||
// booking histograms
|
||||
histo[0] = hbookManager->histogram("track length (mm) of a charged particle",100,0.,50*cm);
|
||||
histo[1] = hbookManager->histogram("Nb of steps per track (charged particle)",100,0.,100.);
|
||||
histo[2] = hbookManager->histogram("step length (mm) charged particle",100,0.,10*mm);
|
||||
}
|
||||
|
||||
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo....
|
||||
|
||||
void Em1RunAction::cleanHisto()
|
||||
{
|
||||
delete [] histo;
|
||||
delete hbookManager;
|
||||
}
|
||||
|
||||
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo....
|
||||
|
||||
void Em1RunAction::BeginOfRunAction(const G4Run* aRun)
|
||||
{
|
||||
G4cout << "### Run " << aRun->GetRunID() << " start." << endl;
|
||||
|
||||
// save Rndm status
|
||||
if (saveRndm > 0)
|
||||
{ HepRandom::showEngineStatus();
|
||||
HepRandom::saveEngineStatus("beginOfRun.rndm");
|
||||
}
|
||||
|
||||
NbOfTraks0 = 0; NbOfTraks1 = 0; NbOfSteps0 = 0; NbOfSteps1 = 0;
|
||||
ProcCounter = new ProcessesCount;
|
||||
|
||||
//histograms
|
||||
//
|
||||
if (aRun->GetRunID() == 0) bookHisto();
|
||||
|
||||
if (G4VVisManager::GetConcreteInstance())
|
||||
{
|
||||
G4UImanager* UI = G4UImanager::GetUIpointer();
|
||||
UI->ApplyCommand("/vis/clear/view");
|
||||
UI->ApplyCommand("/vis/draw/current");
|
||||
}
|
||||
}
|
||||
|
||||
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo....
|
||||
|
||||
void Em1RunAction::CountProcesses(G4String procName)
|
||||
{
|
||||
//does the process already encounted ?
|
||||
size_t nbProc = ProcCounter->entries();
|
||||
size_t i = 0;
|
||||
while ((i<nbProc)&&((*ProcCounter)[i]->GetName()!=procName)) i++;
|
||||
if (i == nbProc) ProcCounter->insert( new OneProcessCount(procName));
|
||||
|
||||
(*ProcCounter)[i]->Count();
|
||||
}
|
||||
|
||||
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo....
|
||||
|
||||
void Em1RunAction::EndOfRunAction(const G4Run* aRun)
|
||||
{
|
||||
G4int NbOfEvents = aRun->GetNumberOfEvent();
|
||||
if (NbOfEvents)
|
||||
{ //nb of tracks and steps per event
|
||||
G4double dNbOfEvents = double(NbOfEvents);
|
||||
|
||||
G4long oldform = G4cout.setf(ios::fixed,ios::floatfield);
|
||||
G4int oldprec = G4cout.precision(2);
|
||||
|
||||
G4cout << "\n nb tracks/event"
|
||||
<< " neutral: " << setw(7) << NbOfTraks0/dNbOfEvents
|
||||
<< " charged: " << setw(7) << NbOfTraks1/dNbOfEvents
|
||||
<< "\n nb steps/event"
|
||||
<< " neutral: " << setw(7) << NbOfSteps0/dNbOfEvents
|
||||
<< " charged: " << setw(7) << NbOfSteps1/dNbOfEvents
|
||||
<< endl;
|
||||
|
||||
//frequency of processes call
|
||||
G4cout << "\n nb of process calls per event: \n ";
|
||||
for (G4int i=0; i< ProcCounter->entries();i++)
|
||||
G4cout << setw(9) << (*ProcCounter)[i]->GetName();
|
||||
|
||||
G4cout << "\n ";
|
||||
for (G4int j=0; j< ProcCounter->entries();j++)
|
||||
G4cout << setw(9) << ((*ProcCounter)[j]->GetCounter())/dNbOfEvents;
|
||||
G4cout << endl;
|
||||
|
||||
G4cout.setf(oldform,ios::floatfield);
|
||||
G4cout.precision(oldprec);
|
||||
}
|
||||
|
||||
delete ProcCounter;
|
||||
|
||||
//draw the events
|
||||
if (G4VVisManager::GetConcreteInstance())
|
||||
G4UImanager::GetUIpointer()->ApplyCommand("/vis/show/view");
|
||||
|
||||
// writing histogram file
|
||||
hbookManager->write();
|
||||
|
||||
// save Rndm status
|
||||
if (saveRndm == 1)
|
||||
{ HepRandom::showEngineStatus();
|
||||
HepRandom::saveEngineStatus("endOfRun.rndm");
|
||||
}
|
||||
}
|
||||
|
||||
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo....
|
||||
@@ -0,0 +1,72 @@
|
||||
// This code implementation is the intellectual property of
|
||||
// the GEANT4 collaboration.
|
||||
//
|
||||
// By copying, distributing or modifying the Program (or any work
|
||||
// based on the Program) you indicate your acceptance of this statement,
|
||||
// and all its terms.
|
||||
//
|
||||
// $Id: Em1RunActionMessenger.cc,v 1.1.4.1 1999/12/07 20:46:55 gunter Exp $
|
||||
// GEANT4 tag $Name: geant4-01-00 $
|
||||
//
|
||||
//
|
||||
|
||||
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo....
|
||||
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo....
|
||||
|
||||
#include "Em1RunActionMessenger.hh"
|
||||
#include "Em1RunAction.hh"
|
||||
|
||||
#include "G4UIdirectory.hh"
|
||||
#include "G4UIcmdWithAString.hh"
|
||||
#include "G4UIcmdWithAnInteger.hh"
|
||||
#include "G4ios.hh"
|
||||
#include "globals.hh"
|
||||
#include "Randomize.hh"
|
||||
|
||||
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo....
|
||||
|
||||
Em1RunActionMessenger::Em1RunActionMessenger(Em1RunAction* run)
|
||||
:Em1Run(run)
|
||||
{
|
||||
RndmDir = new G4UIdirectory("/rndm/");
|
||||
RndmDir->SetGuidance("Rndm status control.");
|
||||
|
||||
RndmSaveCmd = new G4UIcmdWithAnInteger("/rndm/save",this);
|
||||
RndmSaveCmd->SetGuidance("set frequency to save rndm status on external files.");
|
||||
RndmSaveCmd->SetGuidance("freq = 0 not saved");
|
||||
RndmSaveCmd->SetGuidance("freq > 0 saved on: beginOfRun.rndm");
|
||||
RndmSaveCmd->SetGuidance("freq = 1 saved on: endOfRun.rndm");
|
||||
RndmSaveCmd->SetGuidance("freq = 2 saved on: endOfEvent.rndm");
|
||||
RndmSaveCmd->SetParameterName("frequency",false);
|
||||
RndmSaveCmd->SetRange("frequency>=0 && frequency<=2");
|
||||
RndmSaveCmd->AvailableForStates(PreInit,Idle);
|
||||
|
||||
RndmReadCmd = new G4UIcmdWithAString("/rndm/read",this);
|
||||
RndmReadCmd->SetGuidance("get rndm status from an external file.");
|
||||
RndmReadCmd->SetParameterName("fileName",true);
|
||||
RndmReadCmd->SetDefaultValue ("beginOfRun.rndm");
|
||||
RndmReadCmd->AvailableForStates(PreInit,Idle);
|
||||
}
|
||||
|
||||
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo....
|
||||
|
||||
Em1RunActionMessenger::~Em1RunActionMessenger()
|
||||
{
|
||||
delete RndmSaveCmd; delete RndmReadCmd; delete RndmDir;
|
||||
}
|
||||
|
||||
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo....
|
||||
|
||||
void Em1RunActionMessenger::SetNewValue(G4UIcommand* command,G4String newValue)
|
||||
{
|
||||
if (command == RndmSaveCmd)
|
||||
Em1Run->SetRndmFreq(RndmSaveCmd->GetNewIntValue(newValue));
|
||||
|
||||
if (command == RndmReadCmd)
|
||||
{ G4cout << "\n---> rndm status restored from file: " << newValue << endl;
|
||||
HepRandom::restoreEngineStatus(newValue);
|
||||
HepRandom::showEngineStatus();
|
||||
}
|
||||
}
|
||||
|
||||
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo....
|
||||
@@ -0,0 +1,52 @@
|
||||
// This code implementation is the intellectual property of
|
||||
// the GEANT4 collaboration.
|
||||
//
|
||||
// By copying, distributing or modifying the Program (or any work
|
||||
// based on the Program) you indicate your acceptance of this statement,
|
||||
// and all its terms.
|
||||
//
|
||||
// $Id: Em1SteppingAction.cc,v 1.1.4.1 1999/12/07 20:46:56 gunter Exp $
|
||||
// GEANT4 tag $Name: geant4-01-00 $
|
||||
//
|
||||
//
|
||||
|
||||
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo....
|
||||
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo....
|
||||
|
||||
#include "Em1SteppingAction.hh"
|
||||
#include "Em1RunAction.hh"
|
||||
#include "Em1EventAction.hh"
|
||||
#include "G4SteppingManager.hh"
|
||||
#include "G4VProcess.hh"
|
||||
|
||||
#include "CLHEP/Hist/HBookFile.h"
|
||||
|
||||
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo....
|
||||
|
||||
Em1SteppingAction::Em1SteppingAction(Em1RunAction* RuAct, Em1EventAction* EvAct)
|
||||
:runAction(RuAct),eventAction(EvAct)
|
||||
{ }
|
||||
|
||||
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo....
|
||||
|
||||
Em1SteppingAction::~Em1SteppingAction()
|
||||
{ }
|
||||
|
||||
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo....
|
||||
|
||||
void Em1SteppingAction::UserSteppingAction(const G4Step* aStep)
|
||||
{
|
||||
G4double EdepStep = aStep->GetTotalEnergyDeposit();
|
||||
if (EdepStep > 0.) eventAction->addEdep(EdepStep);
|
||||
|
||||
const G4VProcess* process = aStep->GetPostStepPoint()->GetProcessDefinedStep();
|
||||
if (process) runAction->CountProcesses(process->GetProcessName());
|
||||
|
||||
G4double charge = aStep->GetTrack()->GetDefinition()->GetPDGCharge();
|
||||
G4double steplen = aStep->GetStepLength();
|
||||
if (charge != 0.) runAction->GetHisto(2)->accumulate(steplen);
|
||||
}
|
||||
|
||||
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo....
|
||||
|
||||
|
||||
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user