1 | // this : |
---|
2 | #include <G4Lab/Polyhedron.h> |
---|
3 | |
---|
4 | // Lib : |
---|
5 | #include <Lib/Debug.h> |
---|
6 | |
---|
7 | #ifdef WIN32 |
---|
8 | #undef pascal // Clash between windef.h and Geant4/SystemOfnits.hh |
---|
9 | #endif |
---|
10 | |
---|
11 | // Geant4 : |
---|
12 | #include <G4Polyhedron.hh> |
---|
13 | |
---|
14 | namespace G4Lab { |
---|
15 | |
---|
16 | // To have access to G4Polyhedron::pF : |
---|
17 | class G4_Polyhedron : public G4Polyhedron { |
---|
18 | public: |
---|
19 | G4_Polyhedron(const G4Polyhedron& aFrom):G4Polyhedron(aFrom){ |
---|
20 | Lib::Debug::increment("G4_Polyhedron"); |
---|
21 | } |
---|
22 | virtual ~G4_Polyhedron() { |
---|
23 | Lib::Debug::decrement("G4_Polyhedron"); |
---|
24 | } |
---|
25 | G4Facet& getFacet(int aIndex) const {return pF[aIndex];} |
---|
26 | virtual G4_Polyhedron& operator=(const G4_Polyhedron& aFrom) { |
---|
27 | G4Polyhedron::operator=(aFrom); |
---|
28 | return *this; |
---|
29 | } |
---|
30 | }; |
---|
31 | |
---|
32 | } |
---|
33 | |
---|
34 | ////////////////////////////////////////////////////////////////////////////// |
---|
35 | G4Lab::Polyhedron::Polyhedron( |
---|
36 | const G4Polyhedron& aFrom |
---|
37 | ) |
---|
38 | ////////////////////////////////////////////////////////////////////////////// |
---|
39 | //!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!// |
---|
40 | { |
---|
41 | Lib::Debug::increment("G4Lab::Polyhedron"); |
---|
42 | G4_Polyhedron g4Pol(aFrom); |
---|
43 | if (g4Pol.GetNoVertices() > 0 && g4Pol.GetNoFacets() > 0) { |
---|
44 | nvert = g4Pol.GetNoVertices(); |
---|
45 | nface = g4Pol.GetNoFacets(); |
---|
46 | pV = new HVPoint3D[nvert + 1]; |
---|
47 | pF = new SbFacet[nface + 1]; |
---|
48 | int i; |
---|
49 | for (i=1; i<=nvert; i++) { |
---|
50 | HepGeom::Point3D<double> p = g4Pol.GetVertex(i); |
---|
51 | pV[i].setValue((float)p.x(),(float)p.y(),(float)p.z()); |
---|
52 | } |
---|
53 | for (i=1; i<=nface; i++) { |
---|
54 | // Below is dangerous. |
---|
55 | pF[i] = (SbFacet&)g4Pol.getFacet(i); |
---|
56 | } |
---|
57 | }else{ |
---|
58 | nvert = 0; nface = 0; pV = 0; pF = 0; |
---|
59 | } |
---|
60 | } |
---|
61 | ////////////////////////////////////////////////////////////////////////////// |
---|
62 | G4Lab::Polyhedron::~Polyhedron( |
---|
63 | ) |
---|
64 | ////////////////////////////////////////////////////////////////////////////// |
---|
65 | //!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!// |
---|
66 | { |
---|
67 | Lib::Debug::decrement("G4Lab::Polyhedron"); |
---|
68 | } |
---|
69 | ////////////////////////////////////////////////////////////////////////////// |
---|
70 | G4Lab::Polyhedron& G4Lab::Polyhedron::operator=( |
---|
71 | const Polyhedron& aFrom |
---|
72 | ) |
---|
73 | ////////////////////////////////////////////////////////////////////////////// |
---|
74 | //!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!// |
---|
75 | { |
---|
76 | SbPolyhedron::operator=(aFrom); |
---|
77 | return *this; |
---|
78 | } |
---|
79 | ////////////////////////////////////////////////////////////////////////////// |
---|
80 | SbPolyhedron & G4Lab::Polyhedron::operator=( |
---|
81 | const SbPolyhedron& aFrom |
---|
82 | ) |
---|
83 | ////////////////////////////////////////////////////////////////////////////// |
---|
84 | //!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!// |
---|
85 | { |
---|
86 | return SbPolyhedron::operator=(aFrom); |
---|
87 | } |
---|