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.5.4.1 2001/06/28 19:16:18 gunter Exp $ >> 25 // GEANT4 tag $Name: $ 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 G4std::ostream& operator << (G4std::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, << 54 hierarchy // Draw as geometry hierarchy (DTREE in GEANT3 language!). 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 }; 55 }; >> 56 // RepStyle is used to determine which graphics_reps classes to use, >> 57 // if required. 146 58 147 G4ModelingParameters (); 59 G4ModelingParameters (); 148 60 149 G4ModelingParameters (const G4VisAttributes* 61 G4ModelingParameters (const G4VisAttributes* pDefaultVisAttributes, 150 DrawingStyle drawingSt << 62 RepStyle repStyle, 151 G4bool isCulling, 63 G4bool isCulling, 152 G4bool isCullingInvisible, 64 G4bool isCullingInvisible, 153 G4bool isDensityCulling, 65 G4bool isDensityCulling, 154 G4double visibleDensity, 66 G4double visibleDensity, 155 G4bool isCullingCovered, 67 G4bool isCullingCovered, 156 G4int noOfSides); 68 G4int noOfSides); 157 // Culling and clipping policy for G4Physica << 69 // noOfSides is suggested no. of sides per circle in case a >> 70 // polygonal representation is produced. >> 71 >> 72 G4ModelingParameters (const G4VisAttributes* pDefaultVisAttributes, >> 73 RepStyle repStyle, >> 74 G4bool isCulling, >> 75 G4bool isCullingInvisible, >> 76 G4bool isDensityCulling, >> 77 G4double visibleDensity, >> 78 G4bool isCullingCovered, >> 79 G4int noOfSides, >> 80 G4bool isViewGeom, >> 81 G4bool isViewHits, >> 82 G4bool isViewDigis); >> 83 // noOfSides is suggested no. of sides per circle in case a >> 84 // polygonal representation is produced. 158 85 159 ~G4ModelingParameters (); 86 ~G4ModelingParameters (); 160 87 161 // Note: uses default assignment operator an 88 // Note: uses default assignment operator and copy constructor. 162 89 163 G4bool operator != (const G4ModelingParamete 90 G4bool operator != (const G4ModelingParameters&) const; 164 91 165 // Get and Is functions... 92 // Get and Is functions... 166 G4bool IsWarning << 167 const G4VisAttributes* GetDefaultVisAttribut 93 const G4VisAttributes* GetDefaultVisAttributes () const; 168 DrawingStyle GetDrawingStyle << 94 RepStyle GetRepStyle () const; 169 G4int GetNumberOfCloudPoints << 170 G4bool IsCulling 95 G4bool IsCulling () const; 171 G4bool IsCullingInvisible 96 G4bool IsCullingInvisible () const; 172 G4bool IsDensityCulling 97 G4bool IsDensityCulling () const; 173 G4double GetVisibleDensity 98 G4double GetVisibleDensity () const; 174 G4bool IsCullingCovered 99 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 100 G4int GetNoOfSides () const; 181 G4DisplacedSolid* GetSectionSolid << 101 G4bool IsViewGeom () const; 182 CutawayMode GetCutawayMode << 102 G4bool IsViewHits () const; 183 G4DisplacedSolid* GetCutawaySolid << 103 G4bool IsViewDigis () const; 184 const G4Event* GetEvent << 185 const std::vector<VisAttributesModifier>& Ge << 186 G4bool IsSpecialMeshRendering << 187 const std::vector<PVNameCopyNo>& GetSpecialM << 188 104 189 // Set functions... 105 // Set functions... 190 void SetWarning (G4bool); << 191 void SetDefaultVisAttributes (const G4VisAtt 106 void SetDefaultVisAttributes (const G4VisAttributes* pDefaultVisAttributes); 192 void SetDrawingStyle (DrawingStyle); << 107 void SetRepStyle (RepStyle); 193 void SetNumberOfCloudPoints (G4int); << 194 void SetCulling (G4bool); 108 void SetCulling (G4bool); 195 void SetCullingInvisible (G4bool); 109 void SetCullingInvisible (G4bool); 196 void SetDensityCulling (G4bool); 110 void SetDensityCulling (G4bool); 197 void SetVisibleDensity (G4double); 111 void SetVisibleDensity (G4double); 198 void SetCullingCovered (G4bool); 112 void SetCullingCovered (G4bool); 199 void SetCBDAlgorithmNumber (G4int); << 113 void SetNoOfSides (G4int); 200 void SetCBDParameters (const std::vec << 114 void SetViewGeom (); 201 void SetExplodeFactor (G4double explo << 115 void UnsetViewGeom (); 202 void SetExplodeCentre (const G4Point3 << 116 void SetViewHits (); 203 G4int SetNoOfSides (G4int); // Re << 117 void UnsetViewHits (); 204 void SetSectionSolid (G4DisplacedSol << 118 void SetViewDigis (); 205 void SetCutawayMode (CutawayMode); << 119 void UnsetViewDigis (); 206 void SetCutawaySolid (G4DisplacedSol << 120 207 void SetEvent (const G4Event* << 121 // Other functions... 208 void SetVisAttributesModifiers(const std::ve << 122 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 123 225 private: 124 private: 226 125 227 // Data members... 126 // Data members... 228 G4bool fWarning; // Print warn << 229 const G4VisAttributes* fpDefaultVisAttribute 127 const G4VisAttributes* fpDefaultVisAttributes; 230 DrawingStyle fDrawingStyle; // Drawing st << 128 RepStyle fRepStyle; // Representation style. 231 G4int fNumberOfCloudPoints; // For d << 129 G4bool fCulling; // Culling requested. 232 // <= 0 << 130 G4bool fCullInvisible; // Cull (don't Draw) invisible objects. 233 G4bool fCulling; // Culling re << 131 G4bool fDensityCulling; // Density culling requested. If so... 234 G4bool fCullInvisible; // Cull (don' << 132 G4double fVisibleDensity; // ...density lower than this not drawn. 235 G4bool fDensityCulling; // Density cu << 133 G4bool fCullCovered; // Cull daughters covered by opaque mothers. 236 G4double fVisibleDensity; // ...density << 134 G4int fNoOfSides; // ...if polygon approximates circle. 237 G4bool fCullCovered; // Cull daugh << 135 G4bool fViewGeom; // View geometry objects. 238 G4int fCBDAlgorithmNumber; // Colour << 136 G4bool fViewHits; // View hits, if any. 239 std::vector<G4double> fCBDParameters; // Col << 137 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 138 258 std::ostream& operator << << 139 }; 259 (std::ostream& os, const G4ModelingParameters: << 260 << 261 std::ostream& operator << << 262 (std::ostream& os, << 263 const std::vector<G4ModelingParameters::VisAt << 264 140 265 #include "G4ModelingParameters.icc" 141 #include "G4ModelingParameters.icc" 266 142 267 #endif 143 #endif 268 144