Geant4-11
Functions
G4gsdvt2.cc File Reference
#include "G3Division.hh"
#include "G3VolTableEntry.hh"
#include "G3VolTable.hh"
#include "globals.hh"
#include "G3toG4.hh"

Go to the source code of this file.

Functions

void G4CreateCloneVTEWithDivision (G4String vname, G3VolTableEntry *mvte, G3DivType divType, G4int nofDivisions, G4int iaxis, G4int nmed, G4double c0, G4double step)
 
void G4gsdvt2 (G4String vname, G4String vmoth, G4double step, G4int iaxis, G4double c0, G4int numed, G4int ndvmx)
 
void PG4gsdvt2 (G4String *tokens)
 

Function Documentation

◆ G4CreateCloneVTEWithDivision()

void G4CreateCloneVTEWithDivision ( G4String  vname,
G3VolTableEntry mvte,
G3DivType  divType,
G4int  nofDivisions,
G4int  iaxis,
G4int  nmed,
G4double  c0,
G4double  step 
)

Definition at line 51 of file G4gsdvn.cc.

54{
55 G3VolTableEntry* vte=0;
56
57 // loop over all mothers
58 for (G4int i=0; i<mvte->GetNoClones(); i++) {
59 G3VolTableEntry* mvteClone = mvte->GetClone(i);
60 G4String shape = mvteClone->GetShape();
61 G4int nmed = mvteClone->GetNmed();
62 G4String mvteName = mvteClone->GetName();
63
64 G4String newName = vname;
65 if (i>0) {
66 char index[12]; sprintf(index, "%d", i);
67 newName += gSeparator;
68 newName = newName + index;
69 }
70
71 // create new VTE with 0 solid
72 // and let vol table know about it
73 G3VolTableEntry* vteClone
74 = new G3VolTableEntry(newName, shape, 0, 0, nmed, 0, true);
75 G3Vol.PutVTE(vteClone);
76
77 // set mother <-> daughter
78 // (mother/daughter are reset in case an envelope
79 // needs to be created in G3Division::UpdateVTE)
80 mvteClone->AddDaughter(vteClone);
81 vteClone->AddMother(mvteClone);
82
83 // create new G3Division
84 G3Division* division
85 = new G3Division(divType, vteClone, mvteClone,
86 nofDivisions, iaxis, nmed, c0, step);
87
88 // set division to vte and update it
89 vteClone->SetDivision(division);
90 division->UpdateVTE();
91
92 if (i == 0) {
93 // keep the first clone copy
94 vte = vteClone;
95 }
96 else {
97 // let vte know about this clone copy
98 vte->AddClone(vteClone);
99 }
100 }
101}
G3G4DLL_API G3VolTable G3Vol
Definition: clparse.cc:53
G3G4DLL_API char gSeparator
int G4int
Definition: G4Types.hh:85
void UpdateVTE()
Definition: G3Division.cc:96
void AddClone(G3VolTableEntry *aDaughter)
void AddMother(G3VolTableEntry *aDaughter)
void SetDivision(G3Division *division)
G3VolTableEntry * GetClone(G4int i)
void AddDaughter(G3VolTableEntry *aDaughter)
G3VolTableEntry * PutVTE(G3VolTableEntry *aVTE)
Definition: G3VolTable.cc:75

References G3VolTableEntry::AddClone(), G3VolTableEntry::AddDaughter(), G3VolTableEntry::AddMother(), G3Vol, G3VolTableEntry::GetClone(), G3VolTableEntry::GetName(), G3VolTableEntry::GetNmed(), G3VolTableEntry::GetNoClones(), G3VolTableEntry::GetShape(), gSeparator, G3VolTable::PutVTE(), G3VolTableEntry::SetDivision(), and G3Division::UpdateVTE().

Referenced by G4gsdvn(), and G4gsdvt2().

◆ G4gsdvt2()

void G4gsdvt2 ( G4String  vname,
G4String  vmoth,
G4double  step,
G4int  iaxis,
G4double  c0,
G4int  numed,
G4int  ndvmx 
)

Definition at line 57 of file G4gsdvt2.cc.

59{
60 // find mother VTE
61 G3VolTableEntry* mvte = G3Vol.GetVTE(vmoth);
62 if (mvte == 0) {
63 G4String text = "G4gsdvt2:'" + vmoth + "' has no VolTableEntry";
64 G4Exception("G4gsdvt2()", "G3toG40015", FatalException, text);
65 return;
66 }
67 else {
68 // a new vte clone copy with division is created
69 // for each mother (clone copy)
70
72 kDvt2, ndvmx, iaxis, numed, c0, step);
73 }
74}
@ kDvt2
Definition: G3Division.hh:52
@ FatalException
void G4Exception(const char *originOfException, const char *exceptionCode, G4ExceptionSeverity severity, const char *description)
Definition: G4Exception.cc:35
void G4CreateCloneVTEWithDivision(G4String vname, G3VolTableEntry *mvte, G3DivType divType, G4int nofDivisions, G4int iaxis, G4int nmed, G4double c0, G4double step)
Definition: G4gsdvn.cc:51
G3VolTableEntry * GetVTE(const G4String &Vname)
Definition: G3VolTable.cc:53

References FatalException, G3Vol, G4CreateCloneVTEWithDivision(), G4Exception(), G3VolTable::GetVTE(), and kDvt2.

Referenced by G4gsdvx(), and PG4gsdvt2().

◆ PG4gsdvt2()

void PG4gsdvt2 ( G4String tokens)

Definition at line 40 of file G4gsdvt2.cc.

41{
42 // fill the parameter containers
43 G3fillParams(tokens,PTgsdvt2);
44
45 // interpret the parameters
46 G4String vname = Spar[0];
47 G4String vmoth = Spar[1];
48 G4int iaxis = Ipar[0];
49 G4int numed = Ipar[1];
50 G4int ndvmx = Ipar[2];
51 G4double Step = Rpar[0];
52 G4double c0 = Rpar[1];
53
54 G4gsdvt2(vname,vmoth,Step,iaxis,c0,numed,ndvmx);
55}
G3G4DLL_API G4int Ipar[1000]
Definition: clparse.cc:65
void G3fillParams(G4String *tokens, const char *ptypes)
Definition: clparse.cc:218
G3G4DLL_API G4double Rpar[1000]
Definition: clparse.cc:66
G3G4DLL_API G4String Spar[1000]
Definition: clparse.cc:67
#define PTgsdvt2
Definition: G3toG4.hh:60
double G4double
Definition: G4Types.hh:83
void G4gsdvt2(G4String vname, G4String vmoth, G4double step, G4int iaxis, G4double c0, G4int numed, G4int ndvmx)
Definition: G4gsdvt2.cc:57

References G3fillParams(), G4gsdvt2(), Ipar, PTgsdvt2, Rpar, and Spar.

Referenced by G3CLEval().