Geant4 Cross Reference |
>> 1 // Class for description of intersection of two CSG solids 1 // 2 // 2 // ******************************************* << 3 // History: 3 // * License and Disclaimer << 4 // * << 5 // * The Geant4 software is copyright of th << 6 // * the Geant4 Collaboration. It is provided << 7 // * conditions of the Geant4 Software License << 8 // * LICENSE and available at http://cern.ch/ << 9 // * include a list of copyright holders. << 10 // * << 11 // * Neither the authors of this software syst << 12 // * institutes,nor the agencies providing fin << 13 // * work make any representation or warran << 14 // * regarding this software system or assum << 15 // * use. Please see the license in the file << 16 // * for the full disclaimer and the limitatio << 17 // * << 18 // * This code implementation is the result << 19 // * technical work of the GEANT4 collaboratio << 20 // * By using, copying, modifying or distri << 21 // * any work based on the software) you ag << 22 // * use in resulting scientific publicati << 23 // * acceptance of all terms of the Geant4 Sof << 24 // ******************************************* << 25 // 4 // 26 // G4IntersectionSolid << 5 // 12.09.98 V. Grichine, initial design according to J.Apostolakis's 27 // << 6 // recommendations 28 // Class description: << 7 // 28.10.98 V. Grichine, addition of two constructors with G4PlacedSolid 29 // << 30 // Class for description of intersection of tw << 31 8 32 // 12.09.98 V.Grichine: initial design and imp << 33 // ------------------------------------------- << 34 #ifndef G4INTERSECTIONSOLID_HH 9 #ifndef G4INTERSECTIONSOLID_HH 35 #define G4INTERSECTIONSOLID_HH 10 #define G4INTERSECTIONSOLID_HH 36 11 37 #include "G4BooleanSolid.hh" 12 #include "G4BooleanSolid.hh" 38 #include "G4VSolid.hh" 13 #include "G4VSolid.hh" >> 14 // #include "G4PlacedSolid.hh" 39 15 40 #include "G4RotationMatrix.hh" 16 #include "G4RotationMatrix.hh" 41 #include "G4ThreeVector.hh" 17 #include "G4ThreeVector.hh" 42 #include "G4Transform3D.hh" 18 #include "G4Transform3D.hh" 43 #include "G4AffineTransform.hh" 19 #include "G4AffineTransform.hh" 44 20 45 class G4IntersectionSolid : public G4BooleanSo << 21 class G4IntersectionSolid: public G4BooleanSolid 46 { 22 { 47 public: << 23 public: 48 << 24 G4IntersectionSolid( const G4String& pName, 49 G4IntersectionSolid( const G4String& pName << 25 G4VSolid* pSolidA , 50 G4VSolid* pSoli << 26 G4VSolid* pSolidB ) ; 51 G4VSolid* pSoli << 27 52 << 28 G4IntersectionSolid( const G4String& pName, 53 G4IntersectionSolid( const G4String& pName << 29 G4VSolid* pSolidA , 54 G4VSolid* pSoli << 30 G4VSolid* pSolidB, 55 G4VSolid* pSoli << 31 G4RotationMatrix* rotMatrix, 56 G4RotationMatri << 32 const G4ThreeVector& transVector ) ; 57 const G4ThreeVector& << 33 58 << 34 G4IntersectionSolid( const G4String& pName, 59 G4IntersectionSolid( const G4String& pName << 35 G4VSolid* pSolidA , 60 G4VSolid* pSoli << 36 G4VSolid* pSolidB, 61 G4VSolid* pSoli << 37 const G4Transform3D& transform ) ; 62 const G4Transform3D& << 38 63 << 39 virtual ~G4IntersectionSolid() ; 64 ~G4IntersectionSolid() override ; << 40 65 << 41 66 G4GeometryType GetEntityType() const over << 42 G4bool CalculateExtent(const EAxis pAxis, 67 << 43 const G4VoxelLimits& pVoxelLimit, 68 G4VSolid* Clone() const override; << 44 const G4AffineTransform& pTransform, 69 << 45 G4double& pMin, G4double& pMax) const ; 70 G4IntersectionSolid(__void__&); << 71 // Fake default constructor for usage re << 72 // persistency for clients requiring pre << 73 // persistifiable objects. << 74 << 75 G4IntersectionSolid(const G4IntersectionSo << 76 G4IntersectionSolid& operator=(const G4Int << 77 // Copy constructor and assignment opera << 78 << 79 void BoundingLimits(G4ThreeVector& pMin, G << 80 << 81 G4bool CalculateExtent( const EAxis pAxis, << 82 const G4VoxelLimit << 83 const G4AffineTran << 84 G4double& pM << 85 46 86 EInside Inside( const G4ThreeVector& p ) c << 47 EInside Inside( const G4ThreeVector& p ) const ; 87 48 88 G4ThreeVector SurfaceNormal( const G4Three << 49 G4ThreeVector SurfaceNormal( const G4ThreeVector& p ) const ; 89 50 90 G4double DistanceToIn( const G4ThreeVector 51 G4double DistanceToIn( const G4ThreeVector& p, 91 const G4ThreeVector << 52 const G4ThreeVector& v ) const ; 92 53 93 G4double DistanceToIn( const G4ThreeVector << 54 G4double DistanceToIn( const G4ThreeVector& p) const ; 94 55 95 G4double DistanceToOut( const G4ThreeVecto 56 G4double DistanceToOut( const G4ThreeVector& p, 96 const G4ThreeVecto << 57 const G4ThreeVector& v, 97 const G4bool calcN << 58 const G4bool calcNorm=false, 98 G4bool *vali << 59 G4bool *validNorm=0, 99 G4ThreeVecto << 60 G4ThreeVector *n=0 ) const ; 100 61 101 G4double DistanceToOut( const G4ThreeVecto << 62 G4double DistanceToOut( const G4ThreeVector& p ) const ; 102 63 103 64 104 void ComputeDimensions( G4VPVParamet << 65 void ComputeDimensions( G4VPVParameterisation* p, 105 const G4int n, << 66 const G4int n, 106 const G4VPhysicalV << 67 const G4VPhysicalVolume* pRep ) ; 107 68 108 void DescribeYourselfTo ( G4VGraphicsScene << 69 virtual G4GeometryType GetEntityType() const 109 G4Polyhedron* CreatePolyhedron () const ov << 70 { return G4String("G4IntersectionSolid"); } 110 }; << 71 >> 72 void DescribeYourselfTo ( G4VGraphicsScene& scene ) const ; >> 73 G4VisExtent GetExtent () const ; >> 74 G4Polyhedron* CreatePolyhedron () const ; >> 75 G4NURBS* CreateNURBS () const ; >> 76 >> 77 protected: >> 78 >> 79 private: >> 80 >> 81 } ; 111 82 112 #endif 83 #endif 113 84 114 85