Geant4  10.03
G4gstmed.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: G4gstmed.cc 67982 2013-03-13 10:36:03Z gcosmo $
28 //
29 // The last G4int argument of G4gstmed(..) is used for sending
30 // info whether the Geant3 tracking medium parameters should
31 // be set (the max step, later: G3 default cut values).
32 //
33 // by I.Hrivnacova, 27 Sep 99
34 
35 #include "G4SystemOfUnits.hh"
36 #include "G4LogicalVolume.hh"
37 #include "G3toG4.hh"
38 #include "G3MatTable.hh"
39 #include "G3MedTable.hh"
40 #include "G4UserLimits.hh"
41 #include "G4MagneticField.hh"
42 #include "G4Material.hh"
43 
44 void PG4gstmed(G4String *tokens)
45 {
46  // fill the parameter containers
47  G3fillParams(tokens,PTgstmed);
48 
49  // interpret the parameters
50  G4String name = Spar[0];
51  G4int itmed = Ipar[0];
52  G4int nmat = Ipar[1];
53  G4int isvol = Ipar[2];
54  G4int ifield = Ipar[3];
55  G4int nwbuf = Ipar[4];
56  G4double fieldm = Rpar[0];
57  G4double tmaxfd = Rpar[1];
58  G4double stemax = Rpar[2];
59  G4double deemax = Rpar[3];
60  G4double epsil = Rpar[4];
61  G4double stmin = Rpar[5];
62  G4double *ubuf = &Rpar[6];
63 
64  G4gstmed(itmed,name,nmat,isvol,ifield,fieldm,tmaxfd,stemax,
65  deemax,epsil,stmin,ubuf,nwbuf);
66 }
67 
68 void G4gstmed(G4int itmed, G4String, G4int nmat, G4int isvol,
70  G4double stemax, G4double, G4double,
71  G4double, G4double*, G4int useG3TMLimits)
72 {
73  // get the pointer to material nmat
74  G4Material* material = G3Mat.get(nmat);
75 
76  // NB. there is the possibility for redundancy in the mag field
77  // and user limits objects. Who cares.
78  // Generate the mag field object
79  // $$$ G4MagneticField* field = new G4MagneticField(ifield, fieldm, tmaxfd);
80  G4MagneticField* field = 0;
81 
82  // Generate the user limits object
83  // !!! only "stemax" has its equivalent in G4
84 
85  G4UserLimits* limits = 0;
86  if (useG3TMLimits) {
87  limits = new G4UserLimits();
88  limits->SetMaxAllowedStep(stemax*cm);
89  // limits->SetG3DefaultCuts();
90  // this is arranged globally by physics manager
91  }
92 
93  // Store this medium in the G3Med structure
94  G3Med.put(itmed, material, field, limits, isvol);
95 }
G3G4DLL_API G4double Rpar[1000]
Definition: clparse.cc:67
virtual void SetMaxAllowedStep(G4double ustepMax)
G3G4DLL_API G3MedTable G3Med
Definition: clparse.cc:56
G3G4DLL_API G3MatTable G3Mat
Definition: clparse.cc:55
const char * name(G4int ptype)
void G3fillParams(G4String *tokens, const char *ptypes)
Definition: clparse.cc:219
int G4int
Definition: G4Types.hh:78
G4Material * get(G4int id) const
Definition: G3MatTable.cc:44
G3G4DLL_API G4String Spar[1000]
Definition: clparse.cc:68
static constexpr double cm
Definition: G4SIunits.hh:119
#define PTgstmed
Definition: G3toG4.hh:65
void PG4gstmed(G4String *tokens)
Definition: G4gstmed.cc:44
void G4gstmed(G4int itmed, G4String, G4int nmat, G4int isvol, G4int, G4double, G4double, G4double stemax, G4double, G4double, G4double, G4double *, G4int useG3TMLimits)
Definition: G4gstmed.cc:68
G3G4DLL_API G4int Ipar[1000]
Definition: clparse.cc:66
void put(G4int id, G4Material *material, G4MagneticField *field, G4UserLimits *limits, G4int isvol)
Definition: G3MedTable.cc:53
double G4double
Definition: G4Types.hh:76