42 : fVname(vname), fShape(shape), fRpar(0), fNpar(npar), fNmed(nmed),
43 fSolid(solid), fLV(0), fHasNegPars(hasNegPars), fHasMANY(false),
46 if (npar>0 && rpar!=0) {
48 for (
G4int i=0; i<npar; i++) fRpar[i] = rpar[i];
50 fClones.push_back(
this);
54 if (fRpar!=0)
delete [] fRpar;
60 return (
this==&lv) ? true :
false;
68 fG3Pos.push_back(aG3Pos);
78 fDaughters.push_back(aDaughter);
85 fMothers.push_back(itsMother);
92 fClones.push_back(itsClone);
98 fOverlaps.push_back(overlap);
111 +
" does not exist.";
112 G4Exception(
"G3VolTableEntry::ReplaceDaughter()",
"G3toG40007",
116 fDaughters[index] = vteNew;
129 +
" does not exist.";
130 G4Exception(
"G3VolTableEntry::ReplaceMother()",
"G3toG40008",
134 fMothers[index] = vteNew;
149 if (mvte->
GetName() == Mname)
return mvte;
158 if (cvte->
GetName() == Cname)
return cvte;
168 G4cout <<
"Parameters (npar = " << fNpar <<
") fRpar: ";
169 for (
G4int i=0; i<fNpar; i++)
G4cout << fRpar[i] <<
" ";
173 G4cout <<
"================================= " <<
G4endl;
201 for (
G4int i=0; i<fNpar; i++) fRpar[i] = rpar[i];
205 fHasNegPars = hasNegPars;
213 if (fG3Pos.size()>0 && copy>=0 && copy<
G4int(fG3Pos.size())) {
214 std::vector<G3Pos*>::iterator it=fG3Pos.begin();
215 for(
G4int j=0;j<copy;j++) it++;
216 if(it!=fG3Pos.end()) {
254 return (
G4int)fG3Pos.size();
259 if (fG3Pos.size()>0 && copy>=0)
287 return (
G4int)fDaughters.size();
292 return (
G4int)fMothers.size();
297 return (
G4int)fClones.size();
302 return (
G4int)fOverlaps.size();
307 if (i<
G4int(fDaughters.size()) && i>=0)
308 return fDaughters[i];
315 if (i<
G4int(fMothers.size()) && i>=0)
324 if (fMothers.size()>0)
332 if (i<
G4int(fClones.size()) && i>=0)
352std::vector<G3VolTableEntry*>*
G3G4DLL_API G3VolTable G3Vol
G3G4DLL_API char gSeparator
void G4Exception(const char *originOfException, const char *exceptionCode, G4ExceptionSeverity severity, const char *description)
G4GLOB_DLL std::ostream G4cout
void AddClone(G3VolTableEntry *aDaughter)
void AddMother(G3VolTableEntry *aDaughter)
std::vector< G3VolTableEntry * > * GetOverlaps()
void SetName(G4String name)
G3VolTableEntry * FindMother(const G4String &vname)
G3VolTableEntry * GetMasterClone()
G3VolTableEntry * FindClone(const G4String &vname)
G3VolTableEntry(G4String &vname, G4String &shape, G4double *rpar, G4int npar, G4int nmed, G4VSolid *solid, G4bool hasNegPars)
G3VolTableEntry * FindDaughter(const G4String &vname)
G3VolTableEntry * GetClone(G4int i)
void ReplaceDaughter(G3VolTableEntry *vteOld, G3VolTableEntry *vteNew)
void ReplaceMother(G3VolTableEntry *vteOld, G3VolTableEntry *vteNew)
void AddG3Pos(G3Pos *aG3Pos)
G4bool operator==(const G3VolTableEntry &vte) const
void SetHasNegPars(G4bool hasNegPars)
void SetNRpar(G4int npar, G4double *Rpar)
void AddOverlap(G3VolTableEntry *aOverlap)
void ClearG3PosCopy(G4int copy)
void AddDaughter(G3VolTableEntry *aDaughter)
G4LogicalVolume * GetLV()
virtual ~G3VolTableEntry()
void SetSolid(G4VSolid *solid)
G3VolTableEntry * GetMother()
void SetLV(G4LogicalVolume *lv)
G3Pos * GetG3PosCopy(G4int copy=0)
G3VolTableEntry * GetDaughter(G4int i)
void SetHasMANY(G4bool hasMANY)
G3VolTableEntry * GetVTE(const G4String &Vname)
G4bool contains(const G4String &str, std::string_view ss)
Check if a string contains a given substring.