Geant4
9.6.p02
Main Page
Related Pages
Modules
Namespaces
Classes
Files
File List
File Members
All
Classes
Namespaces
Files
Functions
Variables
Typedefs
Enumerations
Enumerator
Friends
Macros
Groups
Pages
geant4_9_6_p02
source
g3tog4
src
G4gspos.cc
Go to the documentation of this file.
1
//
2
// ********************************************************************
3
// * License and Disclaimer *
4
// * *
5
// * The Geant4 software is copyright of the Copyright Holders of *
6
// * the Geant4 Collaboration. It is provided under the terms and *
7
// * conditions of the Geant4 Software License, included in the file *
8
// * LICENSE and available at http://cern.ch/geant4/license . These *
9
// * include a list of copyright holders. *
10
// * *
11
// * Neither the authors of this software system, nor their employing *
12
// * institutes,nor the agencies providing financial support for this *
13
// * work make any representation or warranty, express or implied, *
14
// * regarding this software system or assume any liability for its *
15
// * use. Please see the license in the file LICENSE and URL above *
16
// * for the full disclaimer and the limitation of liability. *
17
// * *
18
// * This code implementation is the result of the scientific and *
19
// * technical work of the GEANT4 collaboration. *
20
// * By using, copying, modifying or distributing the software (or *
21
// * any work based on the software) you agree to acknowledge its *
22
// * use in resulting scientific publications, and indicate your *
23
// * acceptance of all terms of the Geant4 Software license. *
24
// ********************************************************************
25
//
26
//
27
// $Id$
28
//
29
// by I.Hrivnacova, 13.10.99
30
31
#include "
G3G4Interface.hh
"
32
#include "
G3VolTable.hh
"
33
#include "
G3toG4.hh
"
34
#include "
G3Pos.hh
"
35
#include "
globals.hh
"
36
#include "
G4SystemOfUnits.hh
"
37
38
void
G4CreateCloneVTE
(
G3VolTableEntry
* vte,
G3VolTableEntry
* mvte,
39
G4double
pars[],
G4int
npar,
G4int
num,
40
G4double
x
,
G4double
y
,
G4double
z
,
G4int
irot,
G4String
vonly);
41
42
void
PG4gspos
(
G4String
*tokens)
43
{
44
// fill the parameter containers
45
G3fillParams
(tokens,
PTgspos
);
46
47
// interpret the parameters
48
G4String
name
=
Spar
[0];
49
G4String
moth =
Spar
[1];
50
G4String
only =
Spar
[2];
51
G4int
num =
Ipar
[0];
52
G4int
irot =
Ipar
[1];
53
// all parameters are passed to G4gsxxx methods
54
// in G3 default units
55
//G4double x = Rpar[0]*cm;
56
//G4double y = Rpar[1]*cm;
57
//G4double z = Rpar[2]*cm;
58
G4double
x
=
Rpar
[0];
59
G4double
y
=
Rpar
[1];
60
G4double
z
=
Rpar
[2];
61
62
G4gspos
(name, num, moth, x, y, z, irot, only);
63
}
64
65
void
G4gspos
(
G4String
vname,
G4int
num,
G4String
vmoth,
G4double
x
,
66
G4double
y
,
G4double
z
,
G4int
irot,
G4String
vonly)
67
{
68
// find VTEs
69
G3VolTableEntry
* vte =
G3Vol
.
GetVTE
(vname);
70
G3VolTableEntry
* mvte =
G3Vol
.
GetVTE
(vmoth);
71
72
if
(vte == 0) {
73
G4String
text =
"G4gspos: '"
+ vname +
"' has no VolTableEntry"
;
74
G4Exception
(
"G4gspos()"
,
"G3toG40017"
,
FatalException
, text);
75
return
;
76
}
77
else
if
(mvte == 0) {
78
G4String
text =
"G4gspos: '"
+ vmoth +
"' has no VolTableEntry"
;
79
G4Exception
(
"G4gspos()"
,
"G3toG40018"
,
FatalException
, text);
80
return
;
81
}
82
else
{
83
if
(!vte->
HasNegPars
()) {
84
// position vector
85
G4ThreeVector
* offset =
new
G4ThreeVector
(x*
cm
, y*cm, z*cm);
86
87
// create a G3Pos object and add it to the vte
88
G3Pos
* aG3Pos =
new
G3Pos
(vmoth, num, offset, irot, vonly);
89
vte->
AddG3Pos
(aG3Pos);
90
91
// loop over all mothers
92
for
(
G4int
i=0; i<mvte->
GetNoClones
(); i++) {
93
// (mvte is retrieved from its "master" name
94
// -> there is no need to call GetMasterClone()
95
G3VolTableEntry
* mvteClone = mvte->
GetClone
(i);
96
vte->
AddMother
(mvteClone);
97
mvteClone->
AddDaughter
(vte);
98
}
99
}
100
else
{
101
// if vte has neg parameters
102
// a new vte clone copy is created for each mother (clone copy)
103
// and its parameters are derived from it if possible
104
105
G4CreateCloneVTE
(vte, mvte, vte->
GetRpar
(), vte->
GetNpar
(), num,
106
x
,
y
,
z
, irot, vonly);
107
}
108
}
109
}
Generated on Sat May 25 2013 14:33:09 for Geant4 by
1.8.4