source: trunk/source/persistency/gdml/src/G4GDMLParameterisation.cc@ 1350

Last change on this file since 1350 was 1337, checked in by garnier, 15 years ago

tag geant4.9.4 beta 1 + modifs locales

File size: 7.4 KB
Line 
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// $Id: G4GDMLParameterisation.cc,v 1.11 2008/07/16 15:46:34 gcosmo Exp $
27// GEANT4 tag $Name: geant4-09-04-beta-01 $
28//
29// class G4GDMLParameterisation Implementation
30//
31// History:
32// - Created. Zoltan Torzsok, November 2007
33// -------------------------------------------------------------------------
34
35#include "G4GDMLParameterisation.hh"
36
37G4int G4GDMLParameterisation::GetSize() const
38{
39 return (G4int)parameterList.size();
40}
41
42void G4GDMLParameterisation::AddParameter(const PARAMETER& newParameter)
43{
44 parameterList.push_back(newParameter);
45}
46
47void G4GDMLParameterisation::
48ComputeTransformation(const G4int index,G4VPhysicalVolume* physvol) const
49{
50 physvol->SetTranslation(parameterList[index].position);
51 physvol->SetRotation(parameterList[index].pRot);
52}
53
54void G4GDMLParameterisation::
55ComputeDimensions(G4Box& box,const G4int index,const G4VPhysicalVolume*) const
56{
57 box.SetXHalfLength(parameterList[index].dimension[0]);
58 box.SetYHalfLength(parameterList[index].dimension[1]);
59 box.SetZHalfLength(parameterList[index].dimension[2]);
60}
61
62void G4GDMLParameterisation::
63ComputeDimensions(G4Trd& trd,const G4int index,const G4VPhysicalVolume*) const
64{
65 trd.SetXHalfLength1(parameterList[index].dimension[0]);
66 trd.SetXHalfLength2(parameterList[index].dimension[1]);
67 trd.SetYHalfLength1(parameterList[index].dimension[2]);
68 trd.SetYHalfLength2(parameterList[index].dimension[3]);
69 trd.SetZHalfLength(parameterList[index].dimension[4]);
70}
71
72void G4GDMLParameterisation::
73ComputeDimensions(G4Trap& trap,const G4int index,const G4VPhysicalVolume*) const
74{
75 trap.SetAllParameters(parameterList[index].dimension[0], // Dz
76 parameterList[index].dimension[1], // Theta
77 parameterList[index].dimension[2], // Phi
78 parameterList[index].dimension[3], // Dy1
79 parameterList[index].dimension[4], // Dx1
80 parameterList[index].dimension[5], // Dx2
81 parameterList[index].dimension[6], // pAlp1,
82 parameterList[index].dimension[7], // pDy2,
83 parameterList[index].dimension[8], // pDx3,
84 parameterList[index].dimension[9], // pDx4,
85 parameterList[index].dimension[10]); // pAlp2
86}
87
88void G4GDMLParameterisation::
89ComputeDimensions(G4Tubs& tubs,const G4int index,const G4VPhysicalVolume*) const
90{
91 tubs.SetInnerRadius(parameterList[index].dimension[0]);
92 tubs.SetOuterRadius(parameterList[index].dimension[1]);
93 tubs.SetZHalfLength(parameterList[index].dimension[2]);
94 tubs.SetStartPhiAngle(parameterList[index].dimension[3]);
95 tubs.SetDeltaPhiAngle(parameterList[index].dimension[4]);
96}
97
98void G4GDMLParameterisation::
99ComputeDimensions(G4Cons& cons,const G4int index,const G4VPhysicalVolume*) const
100{
101 cons.SetInnerRadiusMinusZ(parameterList[index].dimension[0]);
102 cons.SetOuterRadiusMinusZ(parameterList[index].dimension[1]);
103 cons.SetInnerRadiusPlusZ(parameterList[index].dimension[2]);
104 cons.SetOuterRadiusPlusZ(parameterList[index].dimension[3]);
105 cons.SetZHalfLength(parameterList[index].dimension[4]);
106 cons.SetStartPhiAngle(parameterList[index].dimension[5]);
107 cons.SetDeltaPhiAngle(parameterList[index].dimension[6]);
108}
109
110void G4GDMLParameterisation::
111ComputeDimensions(G4Sphere& sphere,const G4int index,const G4VPhysicalVolume*) const
112{
113 sphere.SetInsideRadius(parameterList[index].dimension[0]);
114 sphere.SetOuterRadius(parameterList[index].dimension[1]);
115 sphere.SetStartPhiAngle(parameterList[index].dimension[2]);
116 sphere.SetDeltaPhiAngle(parameterList[index].dimension[3]);
117 sphere.SetStartThetaAngle(parameterList[index].dimension[4]);
118 sphere.SetDeltaThetaAngle(parameterList[index].dimension[5]);
119}
120
121void G4GDMLParameterisation::
122ComputeDimensions(G4Orb& orb,const G4int index,const G4VPhysicalVolume*) const
123{
124 orb.SetRadius(parameterList[index].dimension[0]);
125}
126
127void G4GDMLParameterisation::
128ComputeDimensions(G4Torus& torus,const G4int index,const G4VPhysicalVolume*) const
129{
130 torus.SetAllParameters(parameterList[index].dimension[0], // pRmin
131 parameterList[index].dimension[1], // pRmax
132 parameterList[index].dimension[2], // pRtor
133 parameterList[index].dimension[3], // pSPhi
134 parameterList[index].dimension[4]); // pDPhi
135}
136
137void G4GDMLParameterisation::
138ComputeDimensions(G4Para& para,const G4int index,const G4VPhysicalVolume*) const
139{
140 para.SetXHalfLength(parameterList[index].dimension[0]);
141 para.SetYHalfLength(parameterList[index].dimension[1]);
142 para.SetZHalfLength(parameterList[index].dimension[2]);
143 para.SetAlpha(parameterList[index].dimension[3]);
144 para.SetTanAlpha(std::tan(parameterList[index].dimension[3]));
145 para.SetThetaAndPhi(parameterList[index].dimension[4],parameterList[index].dimension[5]);
146}
147
148void G4GDMLParameterisation::
149ComputeDimensions(G4Hype& hype,const G4int index,const G4VPhysicalVolume*) const
150{
151 hype.SetInnerRadius(parameterList[index].dimension[0]);
152 hype.SetOuterRadius(parameterList[index].dimension[1]);
153 hype.SetZHalfLength(parameterList[index].dimension[4]);
154 hype.SetInnerStereo(parameterList[index].dimension[2]);
155 hype.SetOuterStereo(parameterList[index].dimension[3]);
156}
157
158void G4GDMLParameterisation::
159ComputeDimensions(G4Polycone&,const G4int,const G4VPhysicalVolume*) const
160{
161 G4Exception("G4GDMLParameterisation::ComputeDimensions()",
162 "InvalidSetup", FatalException,
163 "Parameterisation of G4Polycone not implemented yet. Sorry!");
164}
165
166void G4GDMLParameterisation::
167ComputeDimensions(G4Polyhedra&,const G4int,const G4VPhysicalVolume*) const
168{
169 G4Exception("G4GDMLParameterisation::ComputeDimensions()",
170 "InvalidSetup", FatalException,
171 "Parameterisation of G4Polyhedra not implemented yet. Sorry!");
172}
Note: See TracBrowser for help on using the repository browser.