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