117 : theTgrVolume(0), theG4AssemblyVolume(0)
132 theG4AssemblyVolume = 0;
149 G4bool bFirstCopy =
false;
153 if( theTgrVolume->
GetType() !=
"VOLDivision" )
193 std::pair<G4mmapspl::iterator, G4mmapspl::iterator> children
195 G4mmapspl::iterator cite;
196 for( cite = children.first; cite != children.second; cite++ )
224 if( sol == 0 ) {
return 0; }
229 G4cout <<
" G4tgbVolume::FindOrConstructG4Solid():" <<
G4endl
230 <<
" SOLID = " << sol <<
G4endl
239 if( solid ) {
return solid; }
246 G4cout <<
" G4tgbVolume::FindOrConstructG4Solid() - "
251 std::vector<G4double> solParam;
267 solid =
new G4Box( sname, solParam[0], solParam[1], solParam[2] );
270 else if( stype ==
"TUBE" )
273 solid =
new G4Tubs( sname, solParam[0], solParam[1], solParam[2],
276 else if( stype ==
"TUBS" )
280 if( std::fabs(phiDelta - twopi) < angularTolerance ) { phiDelta = twopi; }
281 solid =
new G4Tubs( sname, solParam[0], solParam[1], solParam[2],
282 solParam[3], phiDelta );
284 else if( stype ==
"TRAP" )
286 if( solParam.size() == 11 )
288 solid =
new G4Trap( sname, solParam[0], solParam[1], solParam[2],
289 solParam[3], solParam[4], solParam[5], solParam[6],
290 solParam[7], solParam[8], solParam[9], solParam[10] );
292 else if( solParam.size() == 4 )
294 solid =
new G4Trap( sname, solParam[0], solParam[1]/deg,
295 solParam[2]/deg, solParam[3]);
299 G4String ErrMessage1 =
"Solid type " + stype;
300 G4String ErrMessage2 =
" should have 11 or 4 parameters,\n";
301 G4String ErrMessage3 =
"and it has "
303 G4String ErrMessage = ErrMessage1 + ErrMessage2 + ErrMessage3 +
" !";
304 G4Exception(
"G4tgbVolume::FindOrConstructG4Solid()",
310 else if( stype ==
"TRD" )
313 solid =
new G4Trd( sname, solParam[0], solParam[1], solParam[2],
314 solParam[3], solParam[4] );
316 else if( stype ==
"PARA" )
319 solid =
new G4Para( sname, solParam[0], solParam[1], solParam[2],
320 solParam[3], solParam[4], solParam[5] );
322 else if( stype ==
"CONE" )
325 solid =
new G4Cons( sname, solParam[0], solParam[1], solParam[2],
326 solParam[3], solParam[4], 0., 360.*deg);
328 else if( stype ==
"CONS" )
332 if( std::fabs(phiDelta - twopi) < angularTolerance ) { phiDelta = twopi; }
333 solid =
new G4Cons( sname, solParam[0], solParam[1], solParam[2],
334 solParam[3], solParam[4], solParam[5], phiDelta);
336 else if( stype ==
"SPHERE" )
340 if( std::fabs(phiDelta - twopi) < angularTolerance ) { phiDelta = twopi; }
342 if( std::fabs(thetaDelta - pi) < angularTolerance ) { thetaDelta = pi; }
343 solid =
new G4Sphere( sname, solParam[0], solParam[1], solParam[2],
344 phiDelta, solParam[4], thetaDelta);
346 else if( stype ==
"ORB" )
349 solid =
new G4Orb( sname, solParam[0] );
351 else if( stype ==
"TORUS" )
355 if( std::fabs(phiDelta - twopi) < angularTolerance ) { phiDelta = twopi; }
356 solid =
new G4Torus( sname, solParam[0], solParam[1], solParam[2],
357 solParam[3], phiDelta );
359 else if( stype ==
"POLYCONE" )
361 size_t nplanes = size_t(solParam[2]);
362 G4bool genericPoly =
false;
363 if( solParam.size() == 3+nplanes*3 )
367 else if( solParam.size() == 3+nplanes*2 )
373 G4String Err1 =
"Solid type " + stype +
" should have ";
375 +
" (Z,Rmin,Rmax)\n";
377 G4String Err4 =
" (RZ corners) parameters,\n";
380 G4String ErrMessage = Err1 + Err2 + Err3 + Err4 + Err5 +
" !";
381 G4Exception(
"G4tgbVolume::FindOrConstructG4Solid()",
388 std::vector<G4double>* z_p =
new std::vector<G4double>;
389 std::vector<G4double>* rmin_p =
new std::vector<G4double>;
390 std::vector<G4double>* rmax_p =
new std::vector<G4double>;
391 for(
size_t ii = 0; ii < nplanes; ii++ )
393 (*z_p).push_back( solParam[3+3*ii] );
394 (*rmin_p).push_back( solParam[3+3*ii+1] );
395 (*rmax_p).push_back( solParam[3+3*ii+2] );
398 if( std::fabs(phiTotal - twopi) < angularTolerance ) { phiTotal = twopi; }
399 solid =
new G4Polycone( sname, solParam[0], phiTotal,
401 &((*z_p)[0]), &((*rmin_p)[0]), &((*rmax_p)[0]));
405 std::vector<G4double>* R_c =
new std::vector<G4double>;
406 std::vector<G4double>* Z_c =
new std::vector<G4double>;
407 for(
size_t ii = 0; ii < nplanes; ii++ )
409 (*R_c).push_back( solParam[3+2*ii] );
410 (*Z_c).push_back( solParam[3+2*ii+1] );
413 if( std::fabs(phiTotal - twopi) < angularTolerance ) { phiTotal = twopi; }
414 solid =
new G4Polycone( sname, solParam[0], phiTotal,
416 &((*R_c)[0]), &((*Z_c)[0]));
420 else if( stype ==
"POLYHEDRA" )
422 size_t nplanes = size_t(solParam[3]);
423 G4bool genericPoly =
false;
424 if( solParam.size() == 4+nplanes*3 )
428 else if( solParam.size() == 4+nplanes*2 )
434 G4String Err1 =
"Solid type " + stype +
" should have ";
436 +
" (Z,Rmin,Rmax)\n";
438 G4String Err4 =
" (RZ corners) parameters,\n";
441 G4String ErrMessage = Err1 + Err2 + Err3 + Err4 + Err5 +
" !";
442 G4Exception(
"G4tgbVolume::FindOrConstructG4Solid()",
449 std::vector<G4double>* z_p =
new std::vector<G4double>;
450 std::vector<G4double>* rmin_p =
new std::vector<G4double>;
451 std::vector<G4double>* rmax_p =
new std::vector<G4double>;
452 for(
size_t ii = 0; ii < nplanes; ii++ )
454 (*z_p).push_back( solParam[4+3*ii] );
455 (*rmin_p).push_back( solParam[4+3*ii+1] );
456 (*rmax_p).push_back( solParam[4+3*ii+2] );
459 if( std::fabs(phiTotal - twopi) < angularTolerance ) { phiTotal = twopi; }
460 solid =
new G4Polyhedra( sname, solParam[0], phiTotal,
461 G4int(solParam[2]), nplanes,
462 &((*z_p)[0]), &((*rmin_p)[0]), &((*rmax_p)[0]));
466 std::vector<G4double>* R_c =
new std::vector<G4double>;
467 std::vector<G4double>* Z_c =
new std::vector<G4double>;
468 for(
size_t ii = 0; ii < nplanes; ii++ )
470 (*R_c).push_back( solParam[4+2*ii] );
471 (*Z_c).push_back( solParam[4+2*ii+1] );
474 if( std::fabs(phiTotal - twopi) < angularTolerance ) { phiTotal = twopi; }
475 solid =
new G4Polyhedra( sname, solParam[0], phiTotal,
476 G4int(solParam[2]), nplanes,
477 &((*R_c)[0]), &((*Z_c)[0]));
480 else if( stype ==
"ELLIPTICALTUBE" )
483 solid =
new G4EllipticalTube( sname, solParam[0], solParam[1], solParam[2]);
485 else if( stype ==
"ELLIPSOID" )
488 solid =
new G4Ellipsoid( sname, solParam[0], solParam[1], solParam[2],
489 solParam[3], solParam[4] );
491 else if( stype ==
"ELLIPTICALCONE" )
495 solParam[2], solParam[3] );
497 else if( stype ==
"HYPE" )
500 solid =
new G4Hype( sname, solParam[0], solParam[1], solParam[2],
501 solParam[3], solParam[4] );
503 else if( stype ==
"TET" )
510 solid =
new G4Tet( sname, anchor, p2, p3, p4 );
512 else if( stype ==
"TWISTEDBOX" )
515 solid =
new G4TwistedBox( sname, solParam[0], solParam[1],
516 solParam[2], solParam[3]);
518 else if( stype ==
"TWISTEDTRAP" )
521 solid =
new G4TwistedTrap( sname, solParam[0], solParam[1], solParam[2],
522 solParam[3], solParam[4], solParam[5], solParam[6],
523 solParam[7], solParam[8], solParam[9], solParam[10] );
525 else if( stype ==
"TWISTEDTRD" )
528 solid =
new G4TwistedTrd( sname, solParam[0], solParam[1], solParam[2],
529 solParam[3], solParam[4], solParam[5]);
531 else if( stype ==
"TWISTEDTUBS" )
535 if( std::fabs(phiTotal - twopi) < angularTolerance ) { phiTotal = twopi; }
536 solid =
new G4TwistedTubs( sname, solParam[0], solParam[1], solParam[2],
537 solParam[3], phiTotal);
539 else if( stype ==
"BREPBOX" )
542 std::vector<G4Point3D> points;
543 for(
size_t ii = 0; ii < 8; ii++ )
545 points.push_back(
G4Point3D(solParam[ii*3+0],
549 solid =
new G4BREPSolidBox( sname, points[0], points[1], points[2],
550 points[3], points[4], points[5], points[6],
553 else if( stype ==
"BREPCYLINDER" )
560 solParam[9], solParam[10] );
562 else if( stype ==
"BREPCONE" )
569 solParam[9], solParam[10], solParam[11] );
571 else if( stype ==
"BREPSPHERE" )
581 else if( stype ==
"BREPTORUS" )
588 solParam[9], solParam[10] );
590 else if( stype ==
"BREPPCONE" )
592 size_t nplanes = size_t(solParam[2]);
594 std::vector<G4double>* z_p =
new std::vector<G4double>;
595 std::vector<G4double>* rmin_p =
new std::vector<G4double>;
596 std::vector<G4double>* rmax_p =
new std::vector<G4double>;
597 for(
size_t ii = 0; ii < nplanes; ii++ )
599 (*z_p).push_back( solParam[4+3*ii] );
600 (*rmin_p).push_back( solParam[4+3*ii+1] );
601 (*rmax_p).push_back( solParam[4+3*ii+2] );
604 if( std::fabs(phiTotal - twopi) < angularTolerance ) { phiTotal = twopi; }
609 &((*z_p)[0]), &((*rmin_p)[0]),
612 else if( stype ==
"BREPPOLYHEDRA" )
614 size_t nplanes = size_t(solParam[3]);
616 std::vector<G4double>* z_p =
new std::vector<G4double>;
617 std::vector<G4double>* rmin_p =
new std::vector<G4double>;
618 std::vector<G4double>* rmax_p =
new std::vector<G4double>;
619 for(
size_t ii = 0; ii < nplanes; ii++ )
621 (*z_p).push_back( solParam[5+3*ii] );
622 (*rmin_p).push_back( solParam[5+3*ii+1] );
623 (*rmax_p).push_back( solParam[5+3*ii+2] );
626 if( std::fabs(phiTotal - twopi) < angularTolerance ) { phiTotal = twopi; }
632 &((*z_p)[0]), &((*rmin_p)[0]),
635 else if( stype ==
"BREPOPENPCONE" )
637 size_t nplanes = size_t(solParam[2]);
638 std::vector<G4double>* z_p =
new std::vector<G4double>;
639 std::vector<G4double>* rmin_p =
new std::vector<G4double>;
640 std::vector<G4double>* rmax_p =
new std::vector<G4double>;
641 for(
size_t ii = 0; ii < nplanes; ii++ )
643 (*z_p).push_back( solParam[4+3*ii] );
644 (*rmin_p).push_back( solParam[4+3*ii+1] );
645 (*rmax_p).push_back( solParam[4+3*ii+2] );
648 if( std::fabs(phiTotal - twopi) < angularTolerance ) { phiTotal = twopi; }
653 &((*z_p)[0]), &((*rmin_p)[0]),
656 else if( stype ==
"TESSELLATED" )
664 for(
G4int ii = 0; ii < nFacets; ii++){
666 if(
G4int(solParam.size()) < jj + nPoints*3 + 2 ) {
670 G4String ErrMessage = Err1 + Err2 + Err3 +
" !";
671 G4Exception(
"G4tgbVolume::FindOrConstructG4Solid()",
678 G4ThreeVector pt0(solParam[jj+2],solParam[jj+3],solParam[jj+4]);
679 G4ThreeVector vt1(solParam[jj+5],solParam[jj+6],solParam[jj+7]);
680 G4ThreeVector vt2(solParam[jj+8],solParam[jj+9],solParam[jj+10]);
682 if( solParam[jj+11] == 0 )
686 else if( solParam[jj+11] == 1 )
692 G4String Err1 =
"Wrong number of vertex type in tesselated solid, it should be 0 =ABSOLUTE) or 1 (=RELATIVE)";
695 G4String ErrMessage = Err1 + Err2 + Err3 +
" !";
696 G4Exception(
"G4tgbVolume::FindOrConstructG4Solid()",
702 else if( nPoints == 4 )
704 G4ThreeVector pt0(solParam[jj+2],solParam[jj+3],solParam[jj+4]);
705 G4ThreeVector vt1(solParam[jj+5],solParam[jj+6],solParam[jj+7]);
706 G4ThreeVector vt2(solParam[jj+8],solParam[jj+9],solParam[jj+10]);
707 G4ThreeVector vt3(solParam[jj+11],solParam[jj+12],solParam[jj+13]);
709 if( solParam[jj+14] == 0 )
713 else if( solParam[jj+14] == 1 )
719 G4String Err1 =
"Wrong number of vertex type in tesselated solid, it should be 0 =ABSOLUTE) or 1 (=RELATIVE)";
722 G4String ErrMessage = Err1 + Err2 + Err3 +
" !";
723 G4Exception(
"G4tgbVolume::FindOrConstructG4Solid()",
731 G4String Err1 =
"Wrong number of points in tesselated solid, it should be 3 or 4";
734 G4String ErrMessage = Err1 + Err2 + Err3 +
" !";
735 G4Exception(
"G4tgbVolume::FindOrConstructG4Solid()",
745 else if( stype ==
"EXTRUDED" )
747 std::vector<G4TwoVector> polygonList;
748 std::vector<G4ExtrudedSolid::ZSection> zsectionList;
751 G4int nMax = nPolygons*2+1;
752 for( ;ii < nMax; ii+=2 )
754 polygonList.push_back(
G4TwoVector(solParam[ii],solParam[ii+1]) );
757 nMax = nPolygons*2 + nZSections*4 + 2;
759 for( ; ii < nMax; ii+=4 )
767 else if( stype.substr(0,7) ==
"Boolean" )
772 G4Exception(
"G4tgbVolume::FindOrConstructG4Solid()",
782 if( stype ==
"Boolean_UNION" )
784 solid =
new G4UnionSolid( sname, sol1, sol2, relRotMat, relPlace );
786 else if( stype ==
"Boolean_SUBTRACTION" )
790 else if( stype ==
"Boolean_INTERSECTION" )
796 G4String ErrMessage =
"Unknown Boolean type " + stype;
797 G4Exception(
"G4tgbVolume::FindOrConstructG4Solid()",
804 G4String ErrMessage =
"Solids of type " + stype
805 +
" not implemented yet, sorry...";
806 G4Exception(
"G4tgbVolume::FindOrConstructG4Solid()",
"NotImplemented",
814 G4cout <<
" G4tgbVolume::FindOrConstructG4Solid()" <<
G4endl
815 <<
" Created solid " << sname
823 G4cout <<
" Constructing new G4Solid: "
833 const unsigned int NoParamExpected,
834 const unsigned int NoParam )
836 if( NoParamExpected != NoParam )
838 G4String Err1 =
"Solid type " + solidType +
" should have ";
843 G4String ErrMessage = Err1 + Err2 + Err3 +
" !";
844 G4Exception(
"G4tgbVolume::CheckNoSolidParams()",
"InvalidSetup",
867 G4String ErrMessage =
"Material not found "
869 +
" for volume " +
GetName() +
".";
870 G4Exception(
"G4tgbVolume::ConstructG4LogVol()",
"InvalidSetup",
876 G4cout <<
" G4tgbVolume::ConstructG4LogVol() -"
888 G4cout <<
" Constructing new G4LogicalVolume: "
900 G4cout <<
" Constructing new G4VisAttributes: "
931 G4cout <<
" G4tgbVolume::ConstructG4LogVol() -"
955 G4cout <<
" G4tgbVolume::ConstructG4PhysVol() - World: "
966 G4cout <<
" Constructing new : G4PVPlacement "
979 <<
" inside " << parentLV->
GetName() <<
" copy No: " << copyNo
985 if( theTgrVolume->
GetType() ==
"VOLSimple" )
991 G4cout <<
" G4tgbVolume::ConstructG4PhysVol() - Placement type = "
997 if( place->
GetType() ==
"PlaceSimple" )
1009 if (1-std::abs(check)>tol)
1011 G4cerr <<
" Matrix : " << rmName <<
" " << rotmat->
colX()
1013 <<
" product x X y * z = " << check <<
" x X y "
1015 G4String ErrMessage =
"Rotation is not ortogonal " + rmName +
" !";
1020 else if (1+check<=tol)
1027 false, copyNo,
false )).first;
1034 G4cout <<
"Construction new G4VPhysicalVolume"
1035 <<
" through G4ReflectionFactory " <<
GetName()
1036 <<
" in volume " << parentLV->
GetName()
1037 <<
" copyNo " << copyNo
1039 <<
" ROT " << rotmat->
colX()
1040 <<
" " << rotmat->
colY()
1054 else if( place->
GetType() ==
"PlaceParam" )
1062 G4cout <<
" G4tgbVolume::ConstructG4PhysVol() -" <<
G4endl
1095 G4String ErrMessage =
"Parameterisation has wrong type, TYPE: "
1097 G4Exception(
"G4tgbVolume::ConstructG4PhysVol",
"WrongArgument",
1104 G4cout <<
" G4tgbVolume::ConstructG4PhysVol() -" <<
G4endl
1105 <<
" New G4PVParameterised: " <<
GetName() <<
" vol "
1107 <<
" axis " << param->
GetAxis() <<
" nCopies "
1119 G4cout <<
" Constructing new G4PVParameterised: "
1127 else if( place->
GetType() ==
"PlaceReplica" )
1135 G4cout <<
" G4tgbVolume::ConstructG4PhysVol() -" <<
G4endl
1136 <<
" replica" <<
" " << currentLV->
GetName()
1137 <<
" in " << parentLV->
GetName()
1150 G4cout <<
" Constructing new G4PVReplica: "
1152 <<
" in " << parentLV->
GetName()
1159 else if( theTgrVolume->
GetType() ==
"VOLDivision" )
1172 G4cout <<
" Constructed new G4LogicalVolume for division: "
1188 G4cout <<
" Constructing new G4PVDivision by number of divisions: "
1190 <<
" axis " << placeDiv->
GetAxis()
1191 <<
" Ndiv " << placeDiv->
GetNDiv()
1204 G4cout <<
" Constructing new G4PVDivision by width: "
1206 <<
" axis " << placeDiv->
GetAxis()
1207 <<
" width " << placeDiv->
GetWidth()
1221 G4cout <<
" Constructing new G4PVDivision by width"
1222 <<
" and number of divisions: "
1224 <<
" axis " << placeDiv->
GetAxis()
1225 <<
" Ndiv " << placeDiv->
GetNDiv()
1226 <<
" width " << placeDiv->
GetWidth()
1233 else if( theTgrVolume->
GetType() ==
"VOLAssembly" )
1238 if( !theG4AssemblyVolume )
1244 G4cout <<
" Constructing new G4AssemblyVolume: "
1245 <<
" number of assembly components "
1272 G4cout <<
" G4AssemblyVolume->AddPlacedVolume " << ii
1274 <<
" translation " << transl
1275 <<
" rotmat " << rotmat->
colX()
1276 <<
" " << rotmat->
colY()
1293 theG4AssemblyVolume->
MakeImprint( parentLV_nonconst, transl, rotmat );
1298 G4String ErrMessage =
"Volume type not supported: "
1299 + theTgrVolume->
GetType() +
", sorry...";
1300 G4Exception(
"G4tgbVolume::ConstructG4PhysVol()",
"NotImplemented",
1382 origParam.
Rmin[ii] = origParam.
Rmin[ii]*redf;
1383 origParam.
Rmax[ii] = origParam.
Rmax[ii]*redf;
1397 origParam.
Rmin[ii] = origParam.
Rmin[ii]*redf;
1398 origParam.
Rmax[ii] = origParam.
Rmax[ii]*redf;
1408 G4String ErrMessage =
"Solid type not supported. VOLUME= " +
GetName()
1410 +
"Only supported types are: G4Box, G4Tubs, G4Cons,"
1411 +
" G4Trd, G4Para, G4Polycone, G4Polyhedra.";
1412 G4Exception(
"G4tgbVolume::BuildSolidForDivision()",
"NotImplemented",
1420 G4cout <<
" Constructing new G4Solid for division: "
HepGeom::Point3D< G4double > G4Point3D
CLHEP::Hep3Vector G4ThreeVector
CLHEP::Hep2Vector G4TwoVector
G4DLLIMPORT std::ostream G4cerr
G4DLLIMPORT std::ostream G4cout
Hep3Vector cross(const Hep3Vector &) const
void MakeImprint(G4LogicalVolume *pMotherLV, G4ThreeVector &translationInMother, G4RotationMatrix *pRotationInMother, G4int copyNumBase=0, G4bool surfCheck=false)
void AddPlacedVolume(G4LogicalVolume *pPlacedVolume, G4ThreeVector &translation, G4RotationMatrix *rotation)
G4double GetZHalfLength() const
G4double GetXHalfLength() const
G4double GetOuterRadiusPlusZ() const
G4double GetInnerRadiusMinusZ() const
G4double GetInnerRadiusPlusZ() const
G4double GetOuterRadiusMinusZ() const
G4double GetZHalfLength() const
G4double GetSurfaceTolerance() const
static G4GeometryTolerance * GetInstance()
G4double GetAngularTolerance() const
G4VSolid * GetSolid() const
void SetVisAttributes(const G4VisAttributes *pVA)
const G4String & GetName() const
G4double GetTanAlpha() const
G4ThreeVector GetSymAxis() const
G4double GetYHalfLength() const
G4double GetZHalfLength() const
G4double GetXHalfLength() const
G4double GetEndPhi() const
G4double GetStartPhi() const
G4PolyconeHistorical * GetOriginalParameters() const
G4double GetEndPhi() const
G4PolyhedraHistorical * GetOriginalParameters() const
G4double GetStartPhi() const
static G4ReflectionFactory * Instance()
G4PhysicalVolumesPair Place(const G4Transform3D &transform3D, const G4String &name, G4LogicalVolume *LV, G4LogicalVolume *motherLV, G4bool isMany, G4int copyNo, G4bool surfCheck=false)
G4bool AddFacet(G4VFacet *aFacet)
G4double GetXHalfLength2() const
G4double GetYHalfLength2() const
G4double GetXHalfLength1() const
G4double GetYHalfLength1() const
G4double GetZHalfLength() const
G4double GetZHalfLength() const
G4double GetInnerRadius() const
G4double GetOuterRadius() const
static G4String ConvertToString(G4bool boolVal)
G4LogicalVolume * GetLogicalVolume() const
const G4String & GetName() const
virtual G4VisExtent GetExtent() const
virtual G4GeometryType GetEntityType() const =0
void SetVisibility(G4bool)
void SetColour(const G4Colour &)
G4Material * FindOrBuildG4Material(const G4String &name, G4bool bMustExist=1)
static G4tgbMaterialMgr * GetInstance()
static G4tgbRotationMatrixMgr * GetInstance()
G4RotationMatrix * FindOrBuildG4RotMatrix(const G4String &name)
G4tgbVolume * FindVolume(const G4String &volname)
G4LogicalVolume * FindG4LogVol(const G4String &theName, const G4bool bExists=0)
G4VSolid * FindG4Solid(const G4String &name)
void RegisterMe(const G4tgbVolume *vol)
static G4tgbVolumeMgr * GetInstance()
void RegisterChildParentLVs(const G4LogicalVolume *logvol, const G4LogicalVolume *parentLV)
G4VPhysicalVolume * ConstructG4PhysVol(const G4tgrPlace *place, const G4LogicalVolume *currentLV, const G4LogicalVolume *parentLV)
const G4String & GetName() const
G4VSolid * FindOrConstructG4Solid(const G4tgrSolid *vol)
void CheckNoSolidParams(const G4String &solidType, const unsigned int NoParamExpected, const unsigned int NoParam)
G4VSolid * BuildSolidForDivision(G4VSolid *parentSolid, EAxis axis)
G4LogicalVolume * ConstructG4LogVol(const G4VSolid *solid)
const G4double * GetColour() const
void ConstructG4Volumes(const G4tgrPlace *place, const G4LogicalVolume *parentLV)
G4bool GetVisibility() const
static G4int GetVerboseLevel()
G4double GetOffset() const
G4double GetWidth() const
G4DivType GetDivType() const
const G4String & GetParamType() const
const G4String & GetRotMatName() const
virtual G4ThreeVector GetPlacement() const
const G4String & GetType() const
unsigned int GetCopyNo() const
G4tgrVolume * GetVolume() const
const G4tgrSolid * GetSolid(G4int ii) const
G4ThreeVector GetRelativePlace() const
const G4String & GetType() const
const G4String & GetName() const
virtual const G4String & GetRelativeRotMatName() const
const std::vector< std::vector< G4double > * > GetSolidParams() const
G4ThreeVector GetComponentPos(G4int ii) const
const G4String & GetComponentRM(G4int ii) const
G4int GetNoComponents() const
const G4String & GetComponentName(G4int ii) const
G4tgrPlaceDivRep * GetPlaceDivision()
static G4tgrVolumeMgr * GetInstance()
std::pair< G4mmapspl::iterator, G4mmapspl::iterator > GetChildren(const G4String &name)
G4bool GetCheckOverlaps() const
const G4String & GetName() const
G4tgrSolid * GetSolid() const
const G4String & GetType() const
const G4String & GetMaterialName() const
void G4Exception(const char *originOfException, const char *exceptionCode, G4ExceptionSeverity severity, const char *comments)