Geant4 Cross Reference

Cross-Referencing   Geant4
Geant4/visualization/modeling/src/G4ModelingParameters.cc

Version: [ ReleaseNotes ] [ 1.0 ] [ 1.1 ] [ 2.0 ] [ 3.0 ] [ 3.1 ] [ 3.2 ] [ 4.0 ] [ 4.0.p1 ] [ 4.0.p2 ] [ 4.1 ] [ 4.1.p1 ] [ 5.0 ] [ 5.0.p1 ] [ 5.1 ] [ 5.1.p1 ] [ 5.2 ] [ 5.2.p1 ] [ 5.2.p2 ] [ 6.0 ] [ 6.0.p1 ] [ 6.1 ] [ 6.2 ] [ 6.2.p1 ] [ 6.2.p2 ] [ 7.0 ] [ 7.0.p1 ] [ 7.1 ] [ 7.1.p1 ] [ 8.0 ] [ 8.0.p1 ] [ 8.1 ] [ 8.1.p1 ] [ 8.1.p2 ] [ 8.2 ] [ 8.2.p1 ] [ 8.3 ] [ 8.3.p1 ] [ 8.3.p2 ] [ 9.0 ] [ 9.0.p1 ] [ 9.0.p2 ] [ 9.1 ] [ 9.1.p1 ] [ 9.1.p2 ] [ 9.1.p3 ] [ 9.2 ] [ 9.2.p1 ] [ 9.2.p2 ] [ 9.2.p3 ] [ 9.2.p4 ] [ 9.3 ] [ 9.3.p1 ] [ 9.3.p2 ] [ 9.4 ] [ 9.4.p1 ] [ 9.4.p2 ] [ 9.4.p3 ] [ 9.4.p4 ] [ 9.5 ] [ 9.5.p1 ] [ 9.5.p2 ] [ 9.6 ] [ 9.6.p1 ] [ 9.6.p2 ] [ 9.6.p3 ] [ 9.6.p4 ] [ 10.0 ] [ 10.0.p1 ] [ 10.0.p2 ] [ 10.0.p3 ] [ 10.0.p4 ] [ 10.1 ] [ 10.1.p1 ] [ 10.1.p2 ] [ 10.1.p3 ] [ 10.2 ] [ 10.2.p1 ] [ 10.2.p2 ] [ 10.2.p3 ] [ 10.3 ] [ 10.3.p1 ] [ 10.3.p2 ] [ 10.3.p3 ] [ 10.4 ] [ 10.4.p1 ] [ 10.4.p2 ] [ 10.4.p3 ] [ 10.5 ] [ 10.5.p1 ] [ 10.6 ] [ 10.6.p1 ] [ 10.6.p2 ] [ 10.6.p3 ] [ 10.7 ] [ 10.7.p1 ] [ 10.7.p2 ] [ 10.7.p3 ] [ 10.7.p4 ] [ 11.0 ] [ 11.0.p1 ] [ 11.0.p2 ] [ 11.0.p3, ] [ 11.0.p4 ] [ 11.1 ] [ 11.1.1 ] [ 11.1.2 ] [ 11.1.3 ] [ 11.2 ] [ 11.2.1 ] [ 11.2.2 ] [ 11.3.0 ]

Diff markup

Differences between /visualization/modeling/src/G4ModelingParameters.cc (Version 11.3.0) and /visualization/modeling/src/G4ModelingParameters.cc (Version 9.4.p3)


  1 //                                                  1 //
  2 // *******************************************      2 // ********************************************************************
  3 // * License and Disclaimer                         3 // * License and Disclaimer                                           *
  4 // *                                                4 // *                                                                  *
  5 // * The  Geant4 software  is  copyright of th      5 // * The  Geant4 software  is  copyright of the Copyright Holders  of *
  6 // * the Geant4 Collaboration.  It is provided      6 // * the Geant4 Collaboration.  It is provided  under  the terms  and *
  7 // * conditions of the Geant4 Software License      7 // * conditions of the Geant4 Software License,  included in the file *
  8 // * LICENSE and available at  http://cern.ch/      8 // * LICENSE and available at  http://cern.ch/geant4/license .  These *
  9 // * include a list of copyright holders.           9 // * include a list of copyright holders.                             *
 10 // *                                               10 // *                                                                  *
 11 // * Neither the authors of this software syst     11 // * Neither the authors of this software system, nor their employing *
 12 // * institutes,nor the agencies providing fin     12 // * institutes,nor the agencies providing financial support for this *
 13 // * work  make  any representation or  warran     13 // * work  make  any representation or  warranty, express or implied, *
 14 // * regarding  this  software system or assum     14 // * regarding  this  software system or assume any liability for its *
 15 // * use.  Please see the license in the file      15 // * use.  Please see the license in the file  LICENSE  and URL above *
 16 // * for the full disclaimer and the limitatio     16 // * for the full disclaimer and the limitation of liability.         *
 17 // *                                               17 // *                                                                  *
 18 // * This  code  implementation is the result      18 // * This  code  implementation is the result of  the  scientific and *
 19 // * technical work of the GEANT4 collaboratio     19 // * technical work of the GEANT4 collaboration.                      *
 20 // * By using,  copying,  modifying or  distri     20 // * By using,  copying,  modifying or  distributing the software (or *
 21 // * any work based  on the software)  you  ag     21 // * any work based  on the software)  you  agree  to acknowledge its *
 22 // * use  in  resulting  scientific  publicati     22 // * use  in  resulting  scientific  publications,  and indicate your *
 23 // * acceptance of all terms of the Geant4 Sof     23 // * acceptance of all terms of the Geant4 Software license.          *
 24 // *******************************************     24 // ********************************************************************
 25 //                                                 25 //
 26 //                                                 26 //
                                                   >>  27 // $Id: G4ModelingParameters.cc,v 1.16 2010-05-11 11:13:35 allison Exp $
                                                   >>  28 // GEANT4 tag $Name: not supported by cvs2svn $
 27 //                                                 29 //
 28 //                                                 30 // 
 29 // John Allison  31st December 1997.               31 // John Allison  31st December 1997.
 30 // Parameters associated with the modeling of      32 // Parameters associated with the modeling of GEANT4 objects.
 31                                                    33 
 32 #include "G4ModelingParameters.hh"                 34 #include "G4ModelingParameters.hh"
 33                                                    35 
 34 #include "G4ios.hh"                                36 #include "G4ios.hh"
 35 #include "G4VisAttributes.hh"                      37 #include "G4VisAttributes.hh"
 36 #include "G4ExceptionSeverity.hh"                  38 #include "G4ExceptionSeverity.hh"
 37 #include "G4SystemOfUnits.hh"                  << 
 38 #include "G4VSolid.hh"                             39 #include "G4VSolid.hh"
 39 #include "G4DisplacedSolid.hh"                 << 
 40 #include "G4VPhysicalVolume.hh"                << 
 41 #include "G4PhysicalVolumeModel.hh"            << 
 42 #include "G4UnitsTable.hh"                     << 
 43                                                << 
 44 #define G4warn G4cout                          << 
 45                                                    40 
 46 G4ModelingParameters::G4ModelingParameters ():     41 G4ModelingParameters::G4ModelingParameters ():
 47   fWarning               (true),                   42   fWarning               (true),
 48   fpDefaultVisAttributes (0),                      43   fpDefaultVisAttributes (0),
 49   fDrawingStyle          (wf),                     44   fDrawingStyle          (wf),
 50   fNumberOfCloudPoints   (10000),              << 
 51   fCulling               (false),                  45   fCulling               (false),
 52   fCullInvisible         (false),                  46   fCullInvisible         (false),
 53   fDensityCulling        (false),                  47   fDensityCulling        (false),
 54   fVisibleDensity        (0.01 * g / cm3),         48   fVisibleDensity        (0.01 * g / cm3),
 55   fCullCovered           (false),                  49   fCullCovered           (false),
 56   fCBDAlgorithmNumber    (0),                  << 
 57   fExplodeFactor         (1.),                     50   fExplodeFactor         (1.),
 58   fNoOfSides             (24),                     51   fNoOfSides             (24),
 59   fpSectionSolid         (0),                      52   fpSectionSolid         (0),
 60   fCutawayMode           (cutawayUnion),       << 
 61   fpCutawaySolid         (0),                      53   fpCutawaySolid         (0),
 62   fpEvent                (0),                  <<  54   fpEvent                (0)
 63   fSpecialMeshRendering  (false)               << 
 64 {}                                                 55 {}
 65                                                    56 
 66 G4ModelingParameters::G4ModelingParameters         57 G4ModelingParameters::G4ModelingParameters
 67 (const G4VisAttributes* pDefaultVisAttributes,     58 (const G4VisAttributes* pDefaultVisAttributes,
 68  G4ModelingParameters::DrawingStyle drawingSty     59  G4ModelingParameters::DrawingStyle drawingStyle,
 69  G4bool isCulling,                                 60  G4bool isCulling,
 70  G4bool isCullingInvisible,                        61  G4bool isCullingInvisible,
 71  G4bool isDensityCulling,                          62  G4bool isDensityCulling,
 72  G4double visibleDensity,                          63  G4double visibleDensity,
 73  G4bool isCullingCovered,                          64  G4bool isCullingCovered,
 74  G4int noOfSides                                   65  G4int noOfSides
 75  ):                                                66  ):
 76   fWarning        (true),                          67   fWarning        (true),
 77   fpDefaultVisAttributes (pDefaultVisAttribute     68   fpDefaultVisAttributes (pDefaultVisAttributes),
 78   fDrawingStyle   (drawingStyle),                  69   fDrawingStyle   (drawingStyle),
 79   fNumberOfCloudPoints (10000),                << 
 80   fCulling        (isCulling),                     70   fCulling        (isCulling),
 81   fCullInvisible  (isCullingInvisible),            71   fCullInvisible  (isCullingInvisible),
 82   fDensityCulling (isDensityCulling),              72   fDensityCulling (isDensityCulling),
 83   fVisibleDensity (visibleDensity),                73   fVisibleDensity (visibleDensity),
 84   fCullCovered    (isCullingCovered),              74   fCullCovered    (isCullingCovered),
 85   fCBDAlgorithmNumber (0),                     << 
 86   fExplodeFactor  (1.),                            75   fExplodeFactor  (1.),
 87   fNoOfSides      (noOfSides),                     76   fNoOfSides      (noOfSides),
 88   fpSectionSolid  (0),                             77   fpSectionSolid  (0),
 89   fCutawayMode    (cutawayUnion),              << 
 90   fpCutawaySolid  (0),                             78   fpCutawaySolid  (0),
 91   fpEvent         (0),                         <<  79   fpEvent         (0)
 92   fSpecialMeshRendering (false)                << 
 93 {}                                                 80 {}
 94                                                    81 
 95 G4ModelingParameters::~G4ModelingParameters ()     82 G4ModelingParameters::~G4ModelingParameters ()
 96 {                                                  83 {
 97   delete fpSectionSolid;                           84   delete fpSectionSolid;
 98   delete fpCutawaySolid;                           85   delete fpCutawaySolid;
 99 }                                                  86 }
100                                                    87 
101 //G4ModelingParameters::VisAttributesModifier: << 
102 //(const G4VisAttributes& visAtts,             << 
103 // G4ModelingParameters::VisAttributesSignifie << 
104 // const std::vector<G4PhysicalVolumeModel::G4 << 
105 //fVisAtts(visAtts), fSignifier(signifier)     << 
106 //{                                            << 
107 //  typedef G4PhysicalVolumeModel::G4PhysicalV << 
108 //  typedef std::vector<PVNodeID> PVPath;      << 
109 //  typedef PVPath::const_iterator PVPathConst << 
110 //  PVPathConstIterator i;                     << 
111 //  for (i = path.begin();                     << 
112 //       i != path.end();                      << 
113 //       ++i) {                                << 
114 //    fPVNameCopyNoPath.push_back              << 
115 //    (PVNameCopyNo                            << 
116 //     (i->GetPhysicalVolume()->GetName(),     << 
117 //      i->GetCopyNo()));                      << 
118 //  }                                          << 
119 //}                                            << 
120                                                << 
121 void G4ModelingParameters::SetVisibleDensity (     88 void G4ModelingParameters::SetVisibleDensity (G4double visibleDensity) {
122   const G4double reasonableMaximum = 10.0 * g      89   const G4double reasonableMaximum = 10.0 * g / cm3;
123   if (visibleDensity < 0 && fWarning) {            90   if (visibleDensity < 0 && fWarning) {
124     G4warn << "G4ModelingParameters::SetVisibl <<  91     G4cout << "G4ModelingParameters::SetVisibleDensity: attempt to set negative "
125       "density - ignored." << G4endl;              92       "density - ignored." << G4endl;
126   }                                                93   }
127   else {                                           94   else {
128     if (fVisibleDensity > reasonableMaximum &&     95     if (fVisibleDensity > reasonableMaximum && fWarning) {
129       G4warn << "G4ModelingParameters::SetVisi <<  96       G4cout << "G4ModelingParameters::SetVisibleDensity: density > "
130      << reasonableMaximum                          97      << reasonableMaximum
131      << " g / cm3 - did you mean this?"            98      << " g / cm3 - did you mean this?"
132      << G4endl;                                    99      << G4endl;
133     }                                             100     }
134     fVisibleDensity = visibleDensity;             101     fVisibleDensity = visibleDensity;
135   }                                               102   }
136 }                                                 103 }
137                                                   104 
138 G4int G4ModelingParameters::SetNoOfSides (G4in    105 G4int G4ModelingParameters::SetNoOfSides (G4int nSides) {
139   const G4int  nSidesMin = fpDefaultVisAttribu << 106   const G4int  nSidesMin = 12;
140   if (nSides < nSidesMin) {                       107   if (nSides < nSidesMin) {
141     nSides = nSidesMin;                           108     nSides = nSidesMin;
142     if (fWarning)                                 109     if (fWarning)
143       G4warn << "G4ModelingParameters::SetNoOf << 110       G4cout << "G4ModelingParameters::SetNoOfSides: attempt to set the"
144   "\nnumber of sides per circle < " << nSidesM    111   "\nnumber of sides per circle < " << nSidesMin
145        << "; forced to" << nSides << G4endl;      112        << "; forced to" << nSides << G4endl;
146   }                                               113   }
147   fNoOfSides = nSides;                            114   fNoOfSides = nSides;
148   return fNoOfSides;                              115   return fNoOfSides;
149 }                                                 116 }
150                                                   117 
151 void G4ModelingParameters::SetSectionSolid        118 void G4ModelingParameters::SetSectionSolid
152 (G4DisplacedSolid* pSectionSolid) {            << 119 (G4VSolid* pSectionSolid) {
153   delete fpSectionSolid;                          120   delete fpSectionSolid;
154   fpSectionSolid = pSectionSolid;                 121   fpSectionSolid = pSectionSolid;
155 }                                                 122 }
156                                                   123 
157 void G4ModelingParameters::SetCutawaySolid        124 void G4ModelingParameters::SetCutawaySolid
158 (G4DisplacedSolid* pCutawaySolid) {            << 125 (G4VSolid* pCutawaySolid) {
159   delete fpCutawaySolid;                          126   delete fpCutawaySolid;
160   fpCutawaySolid = pCutawaySolid;                 127   fpCutawaySolid = pCutawaySolid;
161 }                                                 128 }
162                                                   129 
163 std::ostream& operator << (std::ostream& os, c    130 std::ostream& operator << (std::ostream& os, const G4ModelingParameters& mp)
164 {                                                 131 {
165   os << "Modeling parameters (warning ";          132   os << "Modeling parameters (warning ";
166   if (mp.fWarning) os << "true";                  133   if (mp.fWarning) os << "true";
167   else os << "false";                             134   else os << "false";
168   os << "):";                                     135   os << "):";
169                                                   136 
170   const G4VisAttributes* va = mp.fpDefaultVisA    137   const G4VisAttributes* va = mp.fpDefaultVisAttributes;
171   os << "\n  Default vis. attributes: ";          138   os << "\n  Default vis. attributes: ";
172   if (va) os << *va;                              139   if (va) os << *va;
173   else os << "none";                              140   else os << "none";
174                                                   141 
175   os << "\n  Current requested drawing style:     142   os << "\n  Current requested drawing style: ";
176   switch (mp.fDrawingStyle) {                     143   switch (mp.fDrawingStyle) {
177     case G4ModelingParameters::wf:             << 144   case G4ModelingParameters::wf:
178       os << "wireframe"; break;                << 145     os << "wireframe"; break;
179     case G4ModelingParameters::hlr:            << 146   case G4ModelingParameters::hlr:
180       os << "hidden line removal (hlr)"; break << 147     os << "hidden line removal (hlr)"; break;
181     case G4ModelingParameters::hsr:            << 148   case G4ModelingParameters::hsr:
182       os << "surface (hsr)"; break;            << 149     os << "surface (hsr)"; break;
183     case G4ModelingParameters::hlhsr:          << 150   case G4ModelingParameters::hlhsr:
184       os << "surface and edges (hlhsr)"; break << 151     os << "surface and edges (hlhsr)"; break;
185     case G4ModelingParameters::cloud:          << 152   default: os << "unrecognised"; break;
186       os << "cloud"; break;                    << 
187     default: os << "unrecognised"; break;      << 
188   }                                               153   }
189                                                   154 
190   os << "\n  Number of cloud points: " << mp.f << 
191                                                << 
192   os << "\n  Culling: ";                          155   os << "\n  Culling: ";
193   if (mp.fCulling) os << "on";                    156   if (mp.fCulling) os << "on";
194   else            os << "off";                    157   else            os << "off";
195                                                   158 
196   os << "\n  Culling invisible objects: ";        159   os << "\n  Culling invisible objects: ";
197   if (mp.fCullInvisible) os << "on";              160   if (mp.fCullInvisible) os << "on";
198   else                  os << "off";              161   else                  os << "off";
199                                                   162 
200   os << "\n  Density culling: ";                  163   os << "\n  Density culling: ";
201   if (mp.fDensityCulling) {                       164   if (mp.fDensityCulling) {
202     os << "on - invisible if density less than    165     os << "on - invisible if density less than "
203        << mp.fVisibleDensity / (1. * g / cm3)     166        << mp.fVisibleDensity / (1. * g / cm3) << " g cm^-3";
204   }                                               167   }
205   else os << "off";                               168   else os << "off";
206                                                   169 
207   os << "\n  Culling daughters covered by opaq    170   os << "\n  Culling daughters covered by opaque mothers: ";
208   if (mp.fCullCovered) os << "on";                171   if (mp.fCullCovered) os << "on";
209   else                os << "off";                172   else                os << "off";
210                                                   173 
211   os << "\n  Colour by density: ";             << 
212   if (mp.fCBDAlgorithmNumber <= 0) {           << 
213     os << "inactive";                          << 
214   } else {                                     << 
215     os << "Algorithm " << mp.fCBDAlgorithmNumb << 
216     for (auto p: mp.fCBDParameters) {          << 
217       os << ' ' << G4BestUnit(p,"Volumic Mass" << 
218     }                                          << 
219   }                                            << 
220                                                << 
221   os << "\n  Explode factor: " << mp.fExplodeF    174   os << "\n  Explode factor: " << mp.fExplodeFactor
222      << " about centre: " << mp.fExplodeCentre    175      << " about centre: " << mp.fExplodeCentre;
223                                                   176 
224   os << "\n  No. of sides used in circle polyg    177   os << "\n  No. of sides used in circle polygon approximation: "
225      << mp.fNoOfSides;                            178      << mp.fNoOfSides;
226                                                   179 
227   os << "\n  Section (DCUT) shape (G4Displaced << 180   os << "\n  Section (DCUT) shape (G4VSolid) pointer: ";
228   if (!mp.fpSectionSolid) os << "non-";           181   if (!mp.fpSectionSolid) os << "non-";
229   os << "null";                                   182   os << "null";
230                                                   183 
231   os << "\n  Cutaway mode: ";                  << 184   os << "\n  Cutaway (DCUT) shape (G4VSolid) pointer: ";
232   if (mp.GetCutawayMode() == G4ModelingParamet << 
233   else if (mp.GetCutawayMode() == G4ModelingPa << 
234                                                << 
235   os << "\n  Cutaway (DCUT) shape (G4Displaced << 
236   if (!mp.fpCutawaySolid) os << "non-";           185   if (!mp.fpCutawaySolid) os << "non-";
237   os << "null";                                   186   os << "null";
238                                                   187 
239   os << "\n  Event pointer: " << mp.fpEvent;      188   os << "\n  Event pointer: " << mp.fpEvent;
240                                                   189 
241   os << "\n  Vis attributes modifiers: ";      << 
242   const std::vector<G4ModelingParameters::VisA << 
243   mp.fVisAttributesModifiers;                  << 
244   if (vams.empty()) {                          << 
245     os << "None";                              << 
246   } else {                                     << 
247     os << vams;                                << 
248   }                                            << 
249                                                << 
250   os << "\n  Special Mesh Rendering: ";        << 
251   if (mp.fSpecialMeshRendering) {              << 
252     os << "on: ";                              << 
253     if (mp.fSpecialMeshVolumes.empty()) {      << 
254       os << "all meshes";                      << 
255     } else {                                   << 
256       os << "selected meshes";                 << 
257       for (const auto& vol: mp.fSpecialMeshVol << 
258   os << "\n    " << vol.GetName() << ':' << vo << 
259       }                                        << 
260     }                                          << 
261   } else os << "off";                          << 
262                                                << 
263   return os;                                      190   return os;
264 }                                                 191 }
265                                                   192 
266 G4bool G4ModelingParameters::operator !=          193 G4bool G4ModelingParameters::operator !=
267 (const G4ModelingParameters& mp) const {          194 (const G4ModelingParameters& mp) const {
268                                                   195 
269   if (                                            196   if (
270       (fWarning                != mp.fWarning)    197       (fWarning                != mp.fWarning)                ||
271       (*fpDefaultVisAttributes != *mp.fpDefaul    198       (*fpDefaultVisAttributes != *mp.fpDefaultVisAttributes) ||
272       (fDrawingStyle           != mp.fDrawingS << 
273       (fNumberOfCloudPoints    != mp.fNumberOf << 
274       (fCulling                != mp.fCulling)    199       (fCulling                != mp.fCulling)                ||
275       (fCullInvisible          != mp.fCullInvi    200       (fCullInvisible          != mp.fCullInvisible)          ||
276       (fDensityCulling         != mp.fDensityC    201       (fDensityCulling         != mp.fDensityCulling)         ||
277       (fCullCovered            != mp.fCullCove    202       (fCullCovered            != mp.fCullCovered)            ||
278       (fCBDAlgorithmNumber     != mp.fCBDAlgor << 
279       (fExplodeFactor          != mp.fExplodeF    203       (fExplodeFactor          != mp.fExplodeFactor)          ||
280       (fExplodeCentre          != mp.fExplodeC    204       (fExplodeCentre          != mp.fExplodeCentre)          ||
281       (fNoOfSides              != mp.fNoOfSide    205       (fNoOfSides              != mp.fNoOfSides)              ||
282       (fpSectionSolid          != mp.fpSection << 206       (fpSectionSolid          != mp.fpSectionSolid)     ||
283       (fCutawayMode            != mp.fCutawayM << 207       (fpCutawaySolid          != mp.fpCutawaySolid)     ||
284       (fpCutawaySolid          != mp.fpCutaway << 208       (fpEvent                 != mp.fpEvent)
285       (fpEvent                 != mp.fpEvent)  << 
286       (fSpecialMeshRendering   != mp.fSpecialM << 
287       )                                           209       )
288     return true;                                  210     return true;
289                                                   211 
290   if (fDensityCulling &&                          212   if (fDensityCulling &&
291       (fVisibleDensity != mp.fVisibleDensity))    213       (fVisibleDensity != mp.fVisibleDensity)) return true;
292                                                   214 
293   if (fCBDAlgorithmNumber > 0) {               << 
294     if (fCBDParameters.size() != mp.fCBDParame << 
295     else if (fCBDParameters != mp.fCBDParamete << 
296   }                                            << 
297                                                << 
298   if (fVisAttributesModifiers != mp.fVisAttrib << 
299     return true;                               << 
300                                                << 
301   if (fSpecialMeshRendering) {                 << 
302     if (fSpecialMeshVolumes != mp.fSpecialMesh << 
303       return true;;                            << 
304   }                                            << 
305                                                << 
306   return false;                                   215   return false;
307 }                                                 216 }
308                                                << 
309 G4bool G4ModelingParameters::VisAttributesModi << 
310 (const G4ModelingParameters::VisAttributesModi << 
311 {                                              << 
312   if (fSignifier != rhs.fSignifier) return tru << 
313   if (fPVNameCopyNoPath != rhs.fPVNameCopyNoPa << 
314   switch (fSignifier) {                        << 
315     case G4ModelingParameters::VASVisibility:  << 
316       if (fVisAtts.IsVisible() != rhs.fVisAtts << 
317         return true;                           << 
318       break;                                   << 
319     case G4ModelingParameters::VASDaughtersInv << 
320       if (fVisAtts.IsDaughtersInvisible() !=   << 
321           rhs.fVisAtts.IsDaughtersInvisible()) << 
322         return true;                           << 
323       break;                                   << 
324     case G4ModelingParameters::VASColour:      << 
325       if (fVisAtts.GetColour() != rhs.fVisAtts << 
326         return true;                           << 
327       break;                                   << 
328     case G4ModelingParameters::VASLineStyle:   << 
329       if (fVisAtts.GetLineStyle() != rhs.fVisA << 
330         return true;                           << 
331       break;                                   << 
332     case G4ModelingParameters::VASLineWidth:   << 
333       if (fVisAtts.GetLineWidth() != rhs.fVisA << 
334         return true;                           << 
335       break;                                   << 
336     case G4ModelingParameters::VASForceWirefra << 
337     case G4ModelingParameters::VASForceSolid:  << 
338     case G4ModelingParameters::VASForceCloud:  << 
339       if (fVisAtts.GetForcedDrawingStyle() !=  << 
340           rhs.fVisAtts.GetForcedDrawingStyle() << 
341         return true;                           << 
342       break;                                   << 
343     case G4ModelingParameters::VASForceNumberO << 
344       if (fVisAtts.GetForcedNumberOfCloudPoint << 
345           rhs.fVisAtts.GetForcedNumberOfCloudP << 
346         return true;                           << 
347       break;                                   << 
348     case G4ModelingParameters::VASForceAuxEdge << 
349       if (fVisAtts.IsForceAuxEdgeVisible() !=  << 
350           rhs.fVisAtts.IsForceAuxEdgeVisible() << 
351           fVisAtts.IsForcedAuxEdgeVisible() != << 
352           rhs.fVisAtts.IsForcedAuxEdgeVisible( << 
353         return true;                           << 
354       break;                                   << 
355     case G4ModelingParameters::VASForceLineSeg << 
356       if (fVisAtts.GetForcedLineSegmentsPerCir << 
357           rhs.fVisAtts.GetForcedLineSegmentsPe << 
358         return true;                           << 
359       break;                                   << 
360   }                                            << 
361   return false;                                << 
362 }                                              << 
363                                                << 
364 G4bool G4ModelingParameters::PVNameCopyNo::ope << 
365 (const G4ModelingParameters::PVNameCopyNo& rhs << 
366 {                                              << 
367   if (fName != rhs.fName) return true;         << 
368   if (fCopyNo != rhs.fCopyNo) return true;     << 
369   return false;                                << 
370 }                                              << 
371                                                << 
372 std::ostream& operator <<                      << 
373 (std::ostream& os, const G4ModelingParameters: << 
374 {                                              << 
375   os << "Touchable path: ";                    << 
376   if (path.empty()) {                          << 
377     os << "empty";                             << 
378   } else {                                     << 
379     os << "physical-volume-name:copy-number pa << 
380     G4ModelingParameters::PVNameCopyNoPathCons << 
381     for (i = path.begin(); i != path.end(); ++ << 
382       if (i != path.begin()) {                 << 
383         os << ',';                             << 
384       }                                        << 
385       os << i->GetName() << ':' << i->GetCopyN << 
386     }                                          << 
387   }                                            << 
388   return os;                                   << 
389 }                                              << 
390                                                << 
391 const G4String& G4ModelingParameters::PVPointe << 
392 {                                              << 
393   return fpPV->GetName();                      << 
394 }                                              << 
395                                                << 
396 G4bool G4ModelingParameters::PVPointerCopyNo:: << 
397 (const G4ModelingParameters::PVPointerCopyNo&  << 
398 {                                              << 
399   if (fpPV != rhs.fpPV) return true;           << 
400   if (fCopyNo != rhs.fCopyNo) return true;     << 
401   return false;                                << 
402 }                                              << 
403                                                << 
404 std::ostream& operator <<                      << 
405 (std::ostream& os, const G4ModelingParameters: << 
406 {                                              << 
407   os << "Touchable path: physical-volume-point << 
408   G4ModelingParameters::PVPointerCopyNoPathCon << 
409   for (i = path.begin(); i != path.end(); ++i) << 
410     if (i != path.begin()) {                   << 
411       os << ',';                               << 
412     }                                          << 
413     os << '(' << (void*)(i->GetPVPointer()) << << 
414   }                                            << 
415   return os;                                   << 
416 }                                              << 
417                                                << 
418 std::ostream& operator <<                      << 
419 (std::ostream& os,                             << 
420  const std::vector<G4ModelingParameters::VisAt << 
421 {                                              << 
422   std::vector<G4ModelingParameters::VisAttribu << 
423   iModifier;                                   << 
424   for (iModifier = vams.begin();               << 
425        iModifier != vams.end();                << 
426        ++iModifier) {                          << 
427     const G4ModelingParameters::PVNameCopyNoPa << 
428     iModifier->GetPVNameCopyNoPath();          << 
429     os << '\n' << vamPath;                     << 
430     const G4VisAttributes& vamVisAtts = iModif << 
431     const G4Colour& c = vamVisAtts.GetColour() << 
432     switch (iModifier->GetVisAttributesSignifi << 
433       case G4ModelingParameters::VASVisibility << 
434         os << " visibility ";                  << 
435         if (vamVisAtts.IsVisible()) {          << 
436           os << "true";                        << 
437         } else {                               << 
438           os << "false";                       << 
439         }                                      << 
440         break;                                 << 
441       case G4ModelingParameters::VASDaughtersI << 
442         os << " daughtersInvisible ";          << 
443         if (vamVisAtts.IsDaughtersInvisible()) << 
444           os << "true";                        << 
445         } else {                               << 
446           os << "false";                       << 
447         }                                      << 
448         break;                                 << 
449       case G4ModelingParameters::VASColour:    << 
450         os << " colour " << c;                 << 
451         break;                                 << 
452       case G4ModelingParameters::VASLineStyle: << 
453         os << " lineStyle ";                   << 
454         switch (vamVisAtts.GetLineStyle()) {   << 
455           case G4VisAttributes::unbroken:      << 
456             os << "unbroken";                  << 
457             break;                             << 
458           case G4VisAttributes::dashed:        << 
459             os << "dashed";                    << 
460             break;                             << 
461           case G4VisAttributes::dotted:        << 
462             os << "dotted";                    << 
463         }                                      << 
464         break;                                 << 
465       case G4ModelingParameters::VASLineWidth: << 
466         os << " lineWidth "                    << 
467         << vamVisAtts.GetLineWidth();          << 
468         break;                                 << 
469       case G4ModelingParameters::VASForceWiref << 
470         if (vamVisAtts.GetForcedDrawingStyle() << 
471           os << " forceWireframe ";            << 
472           if (vamVisAtts.IsForceDrawingStyle() << 
473             os << "true";                      << 
474           } else {                             << 
475             os << "false";                     << 
476           }                                    << 
477         }                                      << 
478         break;                                 << 
479       case G4ModelingParameters::VASForceSolid << 
480         if (vamVisAtts.GetForcedDrawingStyle() << 
481           os << " forceSolid ";                << 
482           if (vamVisAtts.IsForceDrawingStyle() << 
483             os << "true";                      << 
484           } else {                             << 
485             os << "false";                     << 
486           }                                    << 
487         }                                      << 
488         break;                                 << 
489       case G4ModelingParameters::VASForceCloud << 
490         if (vamVisAtts.GetForcedDrawingStyle() << 
491           os << " forceCloud ";                << 
492           if (vamVisAtts.IsForceDrawingStyle() << 
493             os << "true";                      << 
494           } else {                             << 
495             os << "false";                     << 
496           }                                    << 
497         }                                      << 
498         break;                                 << 
499       case G4ModelingParameters::VASForceNumbe << 
500         os << " numberOfCloudPoints "          << 
501         << vamVisAtts.GetForcedNumberOfCloudPo << 
502         break;                                 << 
503       case G4ModelingParameters::VASForceAuxEd << 
504         os << " forceAuxEdgeVisible: ";        << 
505         if (!vamVisAtts.IsForceDrawingStyle()) << 
506           os << "not ";                        << 
507         }                                      << 
508         os << " forced";                       << 
509         if (vamVisAtts.IsForceAuxEdgeVisible() << 
510           os << ": ";                          << 
511           if (vamVisAtts.IsForcedAuxEdgeVisibl << 
512             os << "true";                      << 
513           } else {                             << 
514             os << "false";                     << 
515           }                                    << 
516         }                                      << 
517         break;                                 << 
518       case G4ModelingParameters::VASForceLineS << 
519         os << " lineSegmentsPerCircle "        << 
520         << vamVisAtts.GetForcedLineSegmentsPer << 
521         break;                                 << 
522     }                                          << 
523   }                                            << 
524                                                << 
525   return os;                                   << 
526 }                                              << 
527                                                << 
528                                                   217