Geant4 11.1.1
Toolkit for the simulation of the passage of particles through matter
All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Pages
G4gsmate.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//
28// by I.Hrivnacova, 27 Sep 99
29
30#include <cmath>
31
33#include "G4SystemOfUnits.hh"
34#include "G3toG4.hh"
35#include "G3MatTable.hh"
36#include "G3EleTable.hh"
37#include "G4Material.hh"
38#include "G4Isotope.hh"
39#include "G4UnitsTable.hh"
40
41void PG4gsmate(G4String *tokens)
42{
43 // fill the parameter containers
44 G3fillParams(tokens,PTgsmate);
45 G4String name = Spar[0];
46 G4int imate = Ipar[0];
47 G4int nwbf = Ipar[1];
48 G4double a = Rpar[0];
49 G4double z = Rpar[1];
50 G4double dens = Rpar[2];
51 G4double radl = Rpar[3];
52 // G4double absl = Rpar[4];
53 G4double *ubuf = &Rpar[5];
54
55 G4gsmate(imate, name, a, z, dens, radl, nwbf, ubuf);
56}
57
58void G4gsmate(G4int imate, G4String name, G4double ain, G4double zin,
60{
61 G4double G3_minimum_density = 1.e-10*g/cm3;
62
63 // add units
64 G4double z = zin;
65 G4double a = ain*g/mole;
66 G4double dens = densin*g/cm3;
67
68 G4Material* material=0;
69
70 G4String sname = G4StrUtil::strip_copy(name);
71 if (sname == "AIR") {
72 // handle the built in AIR mixture
73 G4double aa[2], zz[2], wmat[2];
74 aa[0] = 14.01*g/mole;
75 aa[1] = 16.00*g/mole;
76 zz[0] = 7;
77 zz[1] = 8;
78 wmat[0] = 0.7;
79 wmat[1] = 0.3;
80 // G4double theDensity = 1.2931*mg/cm3;
81 G4double theDensity = 0.0012931;
82 G4int n=2;
83 G4gsmixt(imate, sname, aa, zz, theDensity, n, wmat);
84 }
85 else if ( z<1 || dens < G3_minimum_density ) {
86 // define vacuum according to definition from N03 example
87 G4double density = universe_mean_density; //from PhysicalConstants.h
88 G4double pressure = 3.e-18*pascal;
89 G4double temperature = 2.73*kelvin;
90 material = new G4Material(name, z=1., a=1.01*g/mole, density,
91 kStateGas,temperature,pressure);
92 }
93 else {
94 //G4Element* element = CreateElement(z, a, name);
95 G4Element* element = G3Ele.GetEle(z);
96 material = new G4Material(name, dens, 1);
97 material->AddElement(element, 1.);
98 }
99
100 // add the material to the List
101 G3Mat.put(imate, material);
102}
103
104
105
106
107
108
109
G3G4DLL_API G3EleTable G3Ele
Definition: clparse.cc:59
void G4gsmixt(G4int imate, G4String name, G4double a[], G4double *z, G4double dens, G4int nlmat, G4double *wmat)
G3G4DLL_API G3MatTable G3Mat
Definition: clparse.cc:54
G3G4DLL_API G4int Ipar[1000]
Definition: clparse.cc:65
void G3fillParams(G4String *tokens, const char *ptypes)
Definition: clparse.cc:216
G3G4DLL_API G4double Rpar[1000]
Definition: clparse.cc:66
G3G4DLL_API G4String Spar[1000]
Definition: clparse.cc:67
#define PTgsmate
Definition: G3toG4.hh:61
@ kStateGas
Definition: G4Material.hh:110
double G4double
Definition: G4Types.hh:83
int G4int
Definition: G4Types.hh:85
void PG4gsmate(G4String *tokens)
Definition: G4gsmate.cc:41
void G4gsmate(G4int imate, G4String name, G4double ain, G4double zin, G4double densin, G4double, G4int, G4double *)
Definition: G4gsmate.cc:58
#define pascal
G4Element * GetEle(G4double Z)
Definition: G3EleTable.cc:51
void put(G4int id, G4Material *material)
Definition: G3MatTable.cc:52
void AddElement(G4Element *elm, G4int nAtoms)
Definition: G4Material.hh:156
G4String strip_copy(G4String str, char ch=' ')
Return copy of string with leading and trailing characters removed.