Geant4 Cross Reference |
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 and of QinetiQ Ltd, * 20 // * subject to DEFCON 705 IPR conditions. 20 // * subject to DEFCON 705 IPR conditions. * 21 // * By using, copying, modifying or distri 21 // * By using, copying, modifying or distributing the software (or * 22 // * any work based on the software) you ag 22 // * any work based on the software) you agree to acknowledge its * 23 // * use in resulting scientific publicati 23 // * use in resulting scientific publications, and indicate your * 24 // * acceptance of all terms of the Geant4 Sof 24 // * acceptance of all terms of the Geant4 Software license. * 25 // ******************************************* 25 // ******************************************************************** 26 // 26 // 27 // 27 // 28 // %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% 28 // %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% 29 // 29 // 30 // MODULE: G4PolyhedronArbitrar << 30 // MODULE: G4PolyhedronArbitrary.cc 31 // 31 // 32 // Date: 15/06/2005 << 32 // Date: 15/06/2005 33 // Author: P R Truscott << 33 // Author: P R Truscott 34 // Organisation: QinetiQ Ltd, UK << 34 // Organisation: QinetiQ Ltd, UK 35 // Customer: UK Ministry of Def << 35 // Customer: UK Ministry of Defence : RAO CRP TD Electronic Systems 36 // Contract: C/MAT/N03517 << 36 // Contract: C/MAT/N03517 37 // 37 // 38 // This software is the intellectual property 38 // This software is the intellectual property of QinetiQ Ltd, subject 39 // DEFCON 705 IPR conditions. 39 // DEFCON 705 IPR conditions. 40 // 40 // 41 // %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% 41 // %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% 42 // 42 // 43 // CHANGE HISTORY 43 // CHANGE HISTORY 44 // -------------- 44 // -------------- 45 // 45 // 46 // 31 October 2004, P R Truscott, QinetiQ Ltd, 46 // 31 October 2004, P R Truscott, QinetiQ Ltd, UK 47 // Created. 47 // Created. 48 // 48 // 49 // %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% 49 // %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% 50 // 50 // 51 // DESCRIPTION 51 // DESCRIPTION 52 // ----------- 52 // ----------- 53 // 53 // 54 // 54 // 55 // 55 // 56 ////////////////////////////////////////////// 56 /////////////////////////////////////////////////////////////////////////////// 57 // 57 // 58 // 58 // 59 #include "G4PolyhedronArbitrary.hh" 59 #include "G4PolyhedronArbitrary.hh" 60 ////////////////////////////////////////////// 60 /////////////////////////////////////////////////////////////////////////////// 61 // 61 // 62 G4PolyhedronArbitrary::G4PolyhedronArbitrary ( 62 G4PolyhedronArbitrary::G4PolyhedronArbitrary (const G4int nVertices, 63 const G4int nFacets) 63 const G4int nFacets) 64 { 64 { 65 AllocateMemory(nVertices, nFacets); 65 AllocateMemory(nVertices, nFacets); 66 nVertexCount = 0; 66 nVertexCount = 0; 67 nFacetCount = 0; 67 nFacetCount = 0; 68 } 68 } 69 ////////////////////////////////////////////// 69 /////////////////////////////////////////////////////////////////////////////// 70 // 70 // 71 G4PolyhedronArbitrary::~G4PolyhedronArbitrary 71 G4PolyhedronArbitrary::~G4PolyhedronArbitrary () 72 {;} 72 {;} 73 ////////////////////////////////////////////// 73 /////////////////////////////////////////////////////////////////////////////// 74 // 74 // 75 void G4PolyhedronArbitrary::AddVertex (const G 75 void G4PolyhedronArbitrary::AddVertex (const G4ThreeVector& v) 76 { 76 { 77 if (nVertexCount == nvert + 1) 77 if (nVertexCount == nvert + 1) 78 { 78 { 79 G4cerr <<G4endl; 79 G4cerr <<G4endl; 80 G4cerr <<"ERROR IN G4PolyhedronArbitrary:: 80 G4cerr <<"ERROR IN G4PolyhedronArbitrary::AddVertex" <<G4endl; 81 G4cerr <<"ATTEMPT TO EXCEED MAXIMUM NUMBER 81 G4cerr <<"ATTEMPT TO EXCEED MAXIMUM NUMBER OF VERTICES : " << nVertexCount 82 <<G4endl; 82 <<G4endl; 83 G4cerr <<G4endl; 83 G4cerr <<G4endl; 84 } 84 } 85 else 85 else 86 { 86 { 87 nVertexCount++; 87 nVertexCount++; 88 pV[nVertexCount] = v; 88 pV[nVertexCount] = v; 89 } 89 } 90 } 90 } 91 ////////////////////////////////////////////// 91 /////////////////////////////////////////////////////////////////////////////// 92 // 92 // 93 void G4PolyhedronArbitrary::AddFacet (const G4 93 void G4PolyhedronArbitrary::AddFacet (const G4int iv1, const G4int iv2, 94 const G4int iv3, const G4int iv4) 94 const G4int iv3, const G4int iv4) 95 { 95 { 96 if (nFacetCount == nface) 96 if (nFacetCount == nface) 97 { 97 { 98 G4cerr <<G4endl; 98 G4cerr <<G4endl; 99 G4cerr <<"ERROR IN G4PolyhedronArbitrary:: 99 G4cerr <<"ERROR IN G4PolyhedronArbitrary::AddFacet" <<G4endl; 100 G4cerr <<"ATTEMPT TO EXCEED MAXIMUM NUMBER 100 G4cerr <<"ATTEMPT TO EXCEED MAXIMUM NUMBER OF FACETS : " << nFacetCount 101 <<G4endl; 101 <<G4endl; 102 G4cerr <<G4endl; 102 G4cerr <<G4endl; 103 } 103 } 104 else if (iv1 < 1 || iv1 > nvert || iv2 < 1 | 104 else if (iv1 < 1 || iv1 > nvert || iv2 < 1 || iv2 > nvert || 105 iv3 < 1 || iv3 > nvert || iv4 > nv 105 iv3 < 1 || iv3 > nvert || iv4 > nvert) 106 { 106 { 107 G4cerr <<G4endl; 107 G4cerr <<G4endl; 108 G4cerr <<"ERROR IN G4PolyhedronArbitrary:: 108 G4cerr <<"ERROR IN G4PolyhedronArbitrary::AddFacet" <<G4endl; 109 G4cerr <<"ATTEMPT TO INDEX VERTEX NUMBER W 109 G4cerr <<"ATTEMPT TO INDEX VERTEX NUMBER WHICH IS OUT-OF-RANGE : " <<G4endl; 110 G4cerr <<G4endl; 110 G4cerr <<G4endl; 111 } 111 } 112 else if (iv1 > nVertexCount || iv2 > nVertex 112 else if (iv1 > nVertexCount || iv2 > nVertexCount || iv3 > nVertexCount || 113 iv4 > nVertexCount) 113 iv4 > nVertexCount) 114 { 114 { 115 G4cerr <<G4endl; 115 G4cerr <<G4endl; 116 G4cerr <<"ERROR IN G4PolyhedronArbitrary:: 116 G4cerr <<"ERROR IN G4PolyhedronArbitrary::AddFacet" <<G4endl; 117 G4cerr <<"VERTEX NEEDS TO BE DEFINED FIRST 117 G4cerr <<"VERTEX NEEDS TO BE DEFINED FIRST : " <<G4endl; 118 G4cerr <<G4endl; 118 G4cerr <<G4endl; 119 } 119 } 120 else 120 else 121 { 121 { 122 nFacetCount++; 122 nFacetCount++; 123 pF[nFacetCount] = G4Facet(iv1, 0, iv2, 0, 123 pF[nFacetCount] = G4Facet(iv1, 0, iv2, 0, iv3, 0, iv4, 0); 124 } 124 } 125 } 125 } 126 ////////////////////////////////////////////// 126 /////////////////////////////////////////////////////////////////////////////// 127 // 127 // 128 128