Geant4 Cross Reference |
1 // 1 // 2 // ******************************************* 2 // ******************************************************************** 3 // * License and Disclaimer << 3 // * DISCLAIMER * 4 // * 4 // * * 5 // * The Geant4 software is copyright of th << 5 // * The following disclaimer summarizes all the specific disclaimers * 6 // * the Geant4 Collaboration. It is provided << 6 // * of contributors to this software. The specific disclaimers,which * 7 // * conditions of the Geant4 Software License << 7 // * govern, are listed with their locations in: * 8 // * LICENSE and available at http://cern.ch/ << 8 // * http://cern.ch/geant4/license * 9 // * include a list of copyright holders. << 10 // * 9 // * * 11 // * Neither the authors of this software syst 10 // * Neither the authors of this software system, nor their employing * 12 // * institutes,nor the agencies providing fin 11 // * institutes,nor the agencies providing financial support for this * 13 // * work make any representation or warran 12 // * work make any representation or warranty, express or implied, * 14 // * regarding this software system or assum 13 // * regarding this software system or assume any liability for its * 15 // * use. Please see the license in the file << 14 // * use. * 16 // * for the full disclaimer and the limitatio << 17 // * 15 // * * 18 // * This code implementation is the result << 16 // * This code implementation is the intellectual property of the * 19 // * technical work of the GEANT4 collaboratio << 17 // * GEANT4 collaboration. * 20 // * By using, copying, modifying or distri << 18 // * By copying, distributing or modifying the Program (or any work * 21 // * any work based on the software) you ag << 19 // * based on the Program) you indicate your acceptance of this * 22 // * use in resulting scientific publicati << 20 // * statement, and all its terms. * 23 // * acceptance of all terms of the Geant4 Sof << 24 // ******************************************* 21 // ******************************************************************** 25 // 22 // 26 // 23 // >> 24 // $Id: G4ModelingParameters.hh,v 1.8 2003/06/16 17:14:28 gunter Exp $ >> 25 // GEANT4 tag $Name: geant4-07-00-patch-01 $ 27 // 26 // 28 // 27 // 29 // John Allison 31st December 1997. 28 // John Allison 31st December 1997. 30 // 29 // 31 // Class Description: 30 // Class Description: 32 // 31 // 33 // Parameters associated with the modeling of 32 // Parameters associated with the modeling of GEANT4 objects. 34 33 35 #ifndef G4MODELINGPARAMETERS_HH 34 #ifndef G4MODELINGPARAMETERS_HH 36 #define G4MODELINGPARAMETERS_HH 35 #define G4MODELINGPARAMETERS_HH 37 36 38 #include "globals.hh" 37 #include "globals.hh" 39 #include "G4VisExtent.hh" 38 #include "G4VisExtent.hh" 40 #include "G4VisAttributes.hh" << 41 #include "G4VPhysicalVolume.hh" << 42 << 43 #include <vector> << 44 #include <utility> << 45 39 46 class G4LogicalVolume; 40 class G4LogicalVolume; >> 41 class G4VPhysicalVolume; 47 class G4VisAttributes; 42 class G4VisAttributes; 48 class G4VSolid; << 49 class G4DisplacedSolid; << 50 class G4Event; << 51 43 52 class G4ModelingParameters { 44 class G4ModelingParameters { 53 45 54 public: // With description 46 public: // With description 55 47 56 // Currently requested drawing style. << 48 friend std::ostream& operator << (std::ostream& os, const G4ModelingParameters&); 57 enum DrawingStyle { << 58 wf, // Draw edges - no hidden l << 59 hlr, // Draw edges - hidden line << 60 hsr, // Draw surfaces - hidden surf << 61 hlhsr, // Draw surfaces and edges - h << 62 cloud // Draw as a cloud of points << 63 }; << 64 << 65 enum CutawayMode { << 66 cutawayUnion, // Union (addition) of << 67 cutawayIntersection // Intersection (multi << 68 }; << 69 << 70 // enums and nested class for communicating << 71 // attributes for a specfic touchable define << 72 enum VisAttributesSignifier { << 73 VASVisibility, << 74 VASDaughtersInvisible, << 75 VASColour, << 76 VASLineStyle, << 77 VASLineWidth, << 78 VASForceWireframe, << 79 VASForceSolid, << 80 VASForceCloud, << 81 VASForceNumberOfCloudPoints, << 82 VASForceAuxEdgeVisible, << 83 VASForceLineSegmentsPerCircle << 84 }; << 85 << 86 class PVNameCopyNo { << 87 public: << 88 // Normal constructor << 89 PVNameCopyNo(const G4String& name, G4int c << 90 : fName(name), fCopyNo(copyNo) {} << 91 const G4String& GetName() const {return fN << 92 G4int GetCopyNo() const {return fCopyNo;} << 93 G4bool operator!=(const PVNameCopyNo&) con << 94 G4bool operator==(const PVNameCopyNo& rhs) << 95 private: << 96 G4String fName; << 97 G4int fCopyNo; << 98 }; << 99 typedef std::vector<PVNameCopyNo> PVNameCopy << 100 typedef PVNameCopyNoPath::const_iterator PVN << 101 << 102 class PVPointerCopyNo { << 103 public: << 104 // Normal constructor << 105 PVPointerCopyNo(G4VPhysicalVolume* pPV, G4 << 106 : fpPV(pPV), fCopyNo(copyNo) {} << 107 const G4String& GetName() const; << 108 const G4VPhysicalVolume* GetPVPointer() co << 109 G4int GetCopyNo() const {return fCopyNo;} << 110 G4bool operator!=(const PVPointerCopyNo&) << 111 G4bool operator==(const PVPointerCopyNo& r << 112 private: << 113 G4VPhysicalVolume* fpPV; << 114 G4int fCopyNo; << 115 }; << 116 typedef std::vector<PVPointerCopyNo> PVPoint << 117 typedef PVPointerCopyNoPath::const_iterator << 118 49 119 class VisAttributesModifier { << 50 enum RepStyle { 120 public: << 51 wireframe, // Use G4Wireframe. 121 VisAttributesModifier << 52 polyhedron, // Use G4Polyhedron. 122 (const G4VisAttributes& visAtts, << 53 nurbs // Use G4NURBS. 123 VisAttributesSignifier signifier, << 124 const PVNameCopyNoPath& path): << 125 fVisAtts(visAtts), fSignifier(signifier), << 126 const G4VisAttributes& GetVisAttributes() << 127 {return fVisAtts;} << 128 VisAttributesSignifier GetVisAttributesSig << 129 {return fSignifier;} << 130 const PVNameCopyNoPath& GetPVNameCopyNoPat << 131 {return fPVNameCopyNoPath;} << 132 void SetVisAttributes(const G4VisAttribute << 133 {fVisAtts = visAtts;} << 134 void SetVisAttributesSignifier(VisAttribut << 135 {fSignifier = signifier;} << 136 void SetPVNameCopyNoPath(const PVNameCopyN << 137 {fPVNameCopyNoPath = PVNameCopyNoPath;} << 138 G4bool operator!=(const VisAttributesModif << 139 G4bool operator==(const VisAttributesModif << 140 {return !operator!=(rhs);} << 141 private: << 142 G4VisAttributes fVisAtts; << 143 VisAttributesSignifier fSignifier; << 144 PVNameCopyNoPath fPVNameCopyNoPath; << 145 }; 54 }; >> 55 // RepStyle is used to determine which graphics_reps classes to use, >> 56 // if required. 146 57 147 G4ModelingParameters (); 58 G4ModelingParameters (); 148 59 149 G4ModelingParameters (const G4VisAttributes* 60 G4ModelingParameters (const G4VisAttributes* pDefaultVisAttributes, 150 DrawingStyle drawingSt << 61 RepStyle repStyle, 151 G4bool isCulling, 62 G4bool isCulling, 152 G4bool isCullingInvisible, 63 G4bool isCullingInvisible, 153 G4bool isDensityCulling, 64 G4bool isDensityCulling, 154 G4double visibleDensity, 65 G4double visibleDensity, 155 G4bool isCullingCovered, 66 G4bool isCullingCovered, 156 G4int noOfSides); 67 G4int noOfSides); 157 // Culling and clipping policy for G4Physica << 68 // noOfSides is suggested no. of sides per circle in case a >> 69 // polygonal representation is produced. >> 70 >> 71 G4ModelingParameters (const G4VisAttributes* pDefaultVisAttributes, >> 72 RepStyle repStyle, >> 73 G4bool isCulling, >> 74 G4bool isCullingInvisible, >> 75 G4bool isDensityCulling, >> 76 G4double visibleDensity, >> 77 G4bool isCullingCovered, >> 78 G4int noOfSides, >> 79 G4bool isViewGeom, >> 80 G4bool isViewHits, >> 81 G4bool isViewDigis); >> 82 // noOfSides is suggested no. of sides per circle in case a >> 83 // polygonal representation is produced. 158 84 159 ~G4ModelingParameters (); 85 ~G4ModelingParameters (); 160 86 161 // Note: uses default assignment operator an 87 // Note: uses default assignment operator and copy constructor. 162 88 163 G4bool operator != (const G4ModelingParamete 89 G4bool operator != (const G4ModelingParameters&) const; 164 90 165 // Get and Is functions... 91 // Get and Is functions... 166 G4bool IsWarning << 167 const G4VisAttributes* GetDefaultVisAttribut 92 const G4VisAttributes* GetDefaultVisAttributes () const; 168 DrawingStyle GetDrawingStyle << 93 RepStyle GetRepStyle () const; 169 G4int GetNumberOfCloudPoints << 170 G4bool IsCulling 94 G4bool IsCulling () const; 171 G4bool IsCullingInvisible 95 G4bool IsCullingInvisible () const; 172 G4bool IsDensityCulling 96 G4bool IsDensityCulling () const; 173 G4double GetVisibleDensity 97 G4double GetVisibleDensity () const; 174 G4bool IsCullingCovered 98 G4bool IsCullingCovered () const; 175 G4int GetCBDAlgorithmNumber << 176 const std::vector<G4double>& GetCBDParameter << 177 G4bool IsExplode << 178 G4double GetExplodeFactor << 179 const G4Point3D& GetExplodeCentre << 180 G4int GetNoOfSides 99 G4int GetNoOfSides () const; 181 G4DisplacedSolid* GetSectionSolid << 100 G4bool IsViewGeom () const; 182 CutawayMode GetCutawayMode << 101 G4bool IsViewHits () const; 183 G4DisplacedSolid* GetCutawaySolid << 102 G4bool IsViewDigis () const; 184 const G4Event* GetEvent << 185 const std::vector<VisAttributesModifier>& Ge << 186 G4bool IsSpecialMeshRendering << 187 const std::vector<PVNameCopyNo>& GetSpecialM << 188 103 189 // Set functions... 104 // Set functions... 190 void SetWarning (G4bool); << 191 void SetDefaultVisAttributes (const G4VisAtt 105 void SetDefaultVisAttributes (const G4VisAttributes* pDefaultVisAttributes); 192 void SetDrawingStyle (DrawingStyle); << 106 void SetRepStyle (RepStyle); 193 void SetNumberOfCloudPoints (G4int); << 194 void SetCulling (G4bool); 107 void SetCulling (G4bool); 195 void SetCullingInvisible (G4bool); 108 void SetCullingInvisible (G4bool); 196 void SetDensityCulling (G4bool); 109 void SetDensityCulling (G4bool); 197 void SetVisibleDensity (G4double); 110 void SetVisibleDensity (G4double); 198 void SetCullingCovered (G4bool); 111 void SetCullingCovered (G4bool); 199 void SetCBDAlgorithmNumber (G4int); << 112 void SetNoOfSides (G4int); 200 void SetCBDParameters (const std::vec << 113 void SetViewGeom (); 201 void SetExplodeFactor (G4double explo << 114 void UnsetViewGeom (); 202 void SetExplodeCentre (const G4Point3 << 115 void SetViewHits (); 203 G4int SetNoOfSides (G4int); // Re << 116 void UnsetViewHits (); 204 void SetSectionSolid (G4DisplacedSol << 117 void SetViewDigis (); 205 void SetCutawayMode (CutawayMode); << 118 void UnsetViewDigis (); 206 void SetCutawaySolid (G4DisplacedSol << 119 207 void SetEvent (const G4Event* << 120 // Other functions... 208 void SetVisAttributesModifiers(const std::ve << 121 void PrintDifferences (const G4ModelingParameters& that) const; 209 void SetSpecialMeshRendering (G4bool); << 210 void SetSpecialMeshVolumes (const std::vec << 211 << 212 friend std::ostream& operator << << 213 (std::ostream& os, const G4ModelingParameter << 214 << 215 friend std::ostream& operator << << 216 (std::ostream& os, const PVNameCopyNoPath&); << 217 << 218 friend std::ostream& operator << << 219 (std::ostream& os, const PVPointerCopyNoPath << 220 << 221 friend std::ostream& operator << << 222 (std::ostream& os, << 223 const std::vector<VisAttributesModifier>&); << 224 122 225 private: 123 private: 226 124 227 // Data members... 125 // Data members... 228 G4bool fWarning; // Print warn << 229 const G4VisAttributes* fpDefaultVisAttribute 126 const G4VisAttributes* fpDefaultVisAttributes; 230 DrawingStyle fDrawingStyle; // Drawing st << 127 RepStyle fRepStyle; // Representation style. 231 G4int fNumberOfCloudPoints; // For d << 128 G4bool fCulling; // Culling requested. 232 // <= 0 << 129 G4bool fCullInvisible; // Cull (don't Draw) invisible objects. 233 G4bool fCulling; // Culling re << 130 G4bool fDensityCulling; // Density culling requested. If so... 234 G4bool fCullInvisible; // Cull (don' << 131 G4double fVisibleDensity; // ...density lower than this not drawn. 235 G4bool fDensityCulling; // Density cu << 132 G4bool fCullCovered; // Cull daughters covered by opaque mothers. 236 G4double fVisibleDensity; // ...density << 133 G4int fNoOfSides; // ...if polygon approximates circle. 237 G4bool fCullCovered; // Cull daugh << 134 G4bool fViewGeom; // View geometry objects. 238 G4int fCBDAlgorithmNumber; // Colour << 135 G4bool fViewHits; // View hits, if any. 239 std::vector<G4double> fCBDParameters; // Col << 136 G4bool fViewDigis; // View digis, if any. 240 G4double fExplodeFactor; // Explode al << 241 G4Point3D fExplodeCentre; // ...about t << 242 G4int fNoOfSides; // ...if poly << 243 G4DisplacedSolid* fpSectionSolid; // For ge << 244 CutawayMode fCutawayMode; // Cutaway mo << 245 G4DisplacedSolid* fpCutawaySolid; // For ge << 246 const G4Event* fpEvent; // Event bein << 247 std::vector<VisAttributesModifier> fVisAttri << 248 G4bool fSpecialMeshRendering; // Requ << 249 std::vector<PVNameCopyNo> fSpecialMeshVolume << 250 }; << 251 << 252 std::ostream& operator << << 253 (std::ostream& os, const G4ModelingParameters& << 254 << 255 std::ostream& operator << << 256 (std::ostream& os, const G4ModelingParameters: << 257 137 258 std::ostream& operator << << 138 }; 259 (std::ostream& os, const G4ModelingParameters: << 260 << 261 std::ostream& operator << << 262 (std::ostream& os, << 263 const std::vector<G4ModelingParameters::VisAt << 264 139 265 #include "G4ModelingParameters.icc" 140 #include "G4ModelingParameters.icc" 266 141 267 #endif 142 #endif 268 143