45   fpDefaultVisAttributes (0),
 
   48   fCullInvisible         (false),
 
   49   fDensityCulling        (false),
 
   50   fVisibleDensity        (0.01 * 
g / 
cm3),
 
   70   fpDefaultVisAttributes (pDefaultVisAttributes),
 
   71   fDrawingStyle   (drawingStyle),
 
   73   fCullInvisible  (isCullingInvisible),
 
   74   fDensityCulling (isDensityCulling),
 
   75   fVisibleDensity (visibleDensity),
 
   76   fCullCovered    (isCullingCovered),
 
   78   fNoOfSides      (noOfSides),
 
   86   delete fpSectionSolid;
 
   87   delete fpCutawaySolid;
 
   93  const std::vector<G4PhysicalVolumeModel::G4PhysicalVolumeNodeID>& path):
 
   94 fVisAtts(visAtts), fSignifier(signifier)
 
   97   typedef std::vector<PVNodeID> 
PVPath;
 
   98   typedef PVPath::const_iterator PVPathConstIterator;
 
   99   PVPathConstIterator i;
 
  100   for (i = path.begin();
 
  103     fPVNameCopyNoPath.push_back
 
  105      (i->GetPhysicalVolume()->GetName(),
 
  112   if (visibleDensity < 0 && fWarning) {
 
  113     G4cout << 
"G4ModelingParameters::SetVisibleDensity: attempt to set negative " 
  114       "density - ignored." << 
G4endl;
 
  117     if (fVisibleDensity > reasonableMaximum && fWarning) {
 
  118       G4cout << 
"G4ModelingParameters::SetVisibleDensity: density > " 
  120        << 
" g / cm3 - did you mean this?" 
  123     fVisibleDensity = visibleDensity;
 
  129   if (nSides < nSidesMin) {
 
  132       G4cout << 
"G4ModelingParameters::SetNoOfSides: attempt to set the" 
  133     "\nnumber of sides per circle < " << nSidesMin
 
  134          << 
"; forced to" << nSides << 
G4endl;
 
  142   delete fpSectionSolid;
 
  143   fpSectionSolid = pSectionSolid;
 
  148   delete fpCutawaySolid;
 
  149   fpCutawaySolid = pCutawaySolid;
 
  154   os << 
"Modeling parameters (warning ";
 
  155   if (mp.fWarning) os << 
"true";
 
  160   os << 
"\n  Default vis. attributes: ";
 
  164   os << 
"\n  Current requested drawing style: ";
 
  165   switch (mp.fDrawingStyle) {
 
  167     os << 
"wireframe"; 
break;
 
  169     os << 
"hidden line removal (hlr)"; 
break;
 
  171     os << 
"surface (hsr)"; 
break;
 
  173     os << 
"surface and edges (hlhsr)"; 
break;
 
  174   default: os << 
"unrecognised"; 
break;
 
  177   os << 
"\n  Culling: ";
 
  178   if (mp.fCulling) os << 
"on";
 
  181   os << 
"\n  Culling invisible objects: ";
 
  182   if (mp.fCullInvisible) os << 
"on";
 
  185   os << 
"\n  Density culling: ";
 
  186   if (mp.fDensityCulling) {
 
  187     os << 
"on - invisible if density less than " 
  188        << mp.fVisibleDensity / (1. * 
g / 
cm3) << 
" g cm^-3";
 
  192   os << 
"\n  Culling daughters covered by opaque mothers: ";
 
  193   if (mp.fCullCovered) os << 
"on";
 
  196   os << 
"\n  Explode factor: " << mp.fExplodeFactor
 
  197      << 
" about centre: " << mp.fExplodeCentre;
 
  199   os << 
"\n  No. of sides used in circle polygon approximation: " 
  202   os << 
"\n  Section (DCUT) shape (G4VSolid) pointer: ";
 
  203   if (!mp.fpSectionSolid) os << 
"non-";
 
  206   os << 
"\n  Cutaway (DCUT) shape (G4VSolid) pointer: ";
 
  207   if (!mp.fpCutawaySolid) os << 
"non-";
 
  210   os << 
"\n  Event pointer: " << mp.fpEvent;
 
  212   os << 
"\n  Vis attributes modifiers: ";
 
  213   const std::vector<G4ModelingParameters::VisAttributesModifier>& vams =
 
  214   mp.fVisAttributesModifiers;
 
  224 G4bool G4ModelingParameters::operator !=
 
  228       (fWarning                != mp.fWarning)                ||
 
  229       (*fpDefaultVisAttributes != *mp.fpDefaultVisAttributes) ||
 
  230       (fCulling                != mp.fCulling)                ||
 
  231       (fCullInvisible          != mp.fCullInvisible)          ||
 
  232       (fDensityCulling         != mp.fDensityCulling)         ||
 
  233       (fCullCovered            != mp.fCullCovered)            ||
 
  234       (fExplodeFactor          != mp.fExplodeFactor)          ||
 
  235       (fExplodeCentre          != mp.fExplodeCentre)          ||
 
  236       (fNoOfSides              != mp.fNoOfSides)              ||
 
  237       (fpSectionSolid          != mp.fpSectionSolid)          ||
 
  238       (fpCutawaySolid          != mp.fpCutawaySolid)          ||
 
  239       (fpEvent                 != mp.fpEvent)
 
  243   if (fDensityCulling &&
 
  244       (fVisibleDensity != mp.fVisibleDensity)) 
return true;
 
  246   if (fVisAttributesModifiers != mp.fVisAttributesModifiers)
 
  252 G4bool G4ModelingParameters::PVNameCopyNo::operator!=
 
  255   if (
fName != rhs.fName) 
return true;
 
  256   if (fCopyNo != rhs.fCopyNo) 
return true;
 
  260 G4bool G4ModelingParameters::VisAttributesModifier::operator!=
 
  263   if (fSignifier != rhs.fSignifier) 
return true;
 
  264   if (fPVNameCopyNoPath != rhs.fPVNameCopyNoPath) 
return true;
 
  265   switch (fSignifier) {
 
  267       if (fVisAtts.IsVisible() != rhs.fVisAtts.IsVisible())
 
  271       if (fVisAtts.IsDaughtersInvisible() !=
 
  272           rhs.fVisAtts.IsDaughtersInvisible())
 
  276       if (fVisAtts.GetColour() != rhs.fVisAtts.GetColour())
 
  280       if (fVisAtts.GetLineStyle() != rhs.fVisAtts.GetLineStyle())
 
  284       if (fVisAtts.GetLineWidth() != rhs.fVisAtts.GetLineWidth())
 
  288       if (fVisAtts.GetForcedDrawingStyle() !=
 
  289           rhs.fVisAtts.GetForcedDrawingStyle())
 
  293       if (fVisAtts.GetForcedDrawingStyle() !=
 
  294           rhs.fVisAtts.GetForcedDrawingStyle())
 
  298       if (fVisAtts.IsForceAuxEdgeVisible() !=
 
  299           rhs.fVisAtts.IsForceAuxEdgeVisible() ||
 
  300           fVisAtts.IsForcedAuxEdgeVisible() !=
 
  301           rhs.fVisAtts.IsForcedAuxEdgeVisible())
 
  305       if (fVisAtts.GetForcedLineSegmentsPerCircle() !=
 
  306           rhs.fVisAtts.GetForcedLineSegmentsPerCircle())
 
  313 std::ostream& 
operator <<
 
  316   os << 
"Touchable path: physical-volume-name:copy-number pairs:\n  ";
 
  318   for (i = path.begin(); i != path.end(); ++i) {
 
  319     if (i != path.begin()) {
 
  322     os << i->GetName() << 
':' << i->GetCopyNo();
 
  327 std::ostream& 
operator <<
 
  329  const std::vector<G4ModelingParameters::VisAttributesModifier>& vams)
 
  331   std::vector<G4ModelingParameters::VisAttributesModifier>::const_iterator
 
  333   for (iModifier = vams.begin();
 
  334        iModifier != vams.end();
 
  337     iModifier->GetPVNameCopyNoPath();
 
  338     os << 
'\n' << vamPath;
 
  341     switch (iModifier->GetVisAttributesSignifier()) {
 
  343         os << 
" visibility ";
 
  351         os << 
" daughtersInvisible ";
 
  359         os << 
" colour " << c;
 
  380           os << 
" forceWireframe ";
 
  390           os << 
" forceSolid ";
 
  399         os << 
" forceAuxEdgeVisible: ";
 
  414         os << 
" lineSegmentsPerCircle " 
G4bool IsForceAuxEdgeVisible() const 
G4double GetLineWidth() const 
void SetVisibleDensity(G4double)
const G4Colour & GetColour() const 
static constexpr double g
LineStyle GetLineStyle() const 
G4int SetNoOfSides(G4int)
void SetCutawaySolid(G4VSolid *pCutawaySolid)
G4GLOB_DLL std::ostream G4cout
static G4int GetMinLineSegmentsPerCircle()
G4bool IsDaughtersInvisible() const 
G4PhysicalVolumeModel::G4PhysicalVolumeNodeID PVNodeID
VisAttributesModifier(const G4VisAttributes &visAtts, VisAttributesSignifier signifier, const PVNameCopyNoPath &path)
std::vector< PVNodeID > PVPath
G4bool IsForcedAuxEdgeVisible() const 
static constexpr double cm3
G4int GetForcedLineSegmentsPerCircle() const 
void SetSectionSolid(G4VSolid *pSectionSolid)
std::vector< PVNameCopyNo > PVNameCopyNoPath
G4bool IsForceDrawingStyle() const 
std::ostream & operator<<(std::ostream &, const BasicVector3D< float > &)
ForcedDrawingStyle GetForcedDrawingStyle() const 
PVNameCopyNoPath::const_iterator PVNameCopyNoPathConstIterator