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

Last change on this file since 1347 was 1337, checked in by garnier, 14 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.