Geant4 Cross Reference |
1 // 1 2 // ******************************************* 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 // 26 // G4NavigationLevelRep inline implementation 27 // 28 // 1 October 1997, J.Apostolakis Initial versi 29 // ------------------------------------------- 30 31 extern G4GEOM_DLL G4Allocator<G4NavigationLeve 32 33 // Constructors 34 //-------------- 35 36 inline 37 G4NavigationLevelRep::G4NavigationLevelRep( G4 38 const G4 39 EV 40 G4 41 : sTransform(afTransform), 42 sPhysicalVolumePtr(pPhysVol), 43 sReplicaNo(repNo), 44 sVolumeType(volTp) 45 { 46 } 47 48 inline 49 G4NavigationLevelRep::G4NavigationLevelRep() 50 : sVolumeType(kReplica) 51 { 52 } 53 54 inline 55 G4NavigationLevelRep::G4NavigationLevelRep( G4 56 const G4 57 const G4 58 EV 59 G4 60 : sPhysicalVolumePtr(pPhysVol), 61 sReplicaNo(repNo), 62 sVolumeType(volTp) 63 { 64 sTransform.InverseProduct( levelAbove, relat 65 } 66 67 inline 68 G4NavigationLevelRep::G4NavigationLevelRep( G4 69 : sTransform(right.sTransform), 70 sPhysicalVolumePtr(right.sPhysicalVolume 71 sReplicaNo(right.sReplicaNo), 72 sVolumeType(right.sVolumeType) 73 { 74 } 75 76 // Destructor 77 //-------------- 78 79 inline 80 G4NavigationLevelRep::~G4NavigationLevelRep() 81 { 82 #ifdef DEBUG_NAVIG_LEVEL 83 if(fCountRef>0) 84 { 85 G4Exception("G4NavigationLevelRep::~G4Navi 86 "GeomVol0003", FatalException, 87 "Deletion of data-level object 88 } 89 #endif 90 } 91 92 // Operators 93 // -------------- 94 95 inline 96 G4NavigationLevelRep& 97 G4NavigationLevelRep::operator=( const G4Navig 98 { 99 if ( &right != this ) 100 { 101 sTransform = right.sTransform; 102 sPhysicalVolumePtr = right.sPhysicalVolume 103 sVolumeType = right.sVolumeType; 104 sReplicaNo = right.sReplicaNo; 105 fCountRef = right.fCountRef; 106 } 107 return *this; 108 } 109 110 // Accessors 111 // -------------- 112 113 inline 114 G4VPhysicalVolume* 115 G4NavigationLevelRep::GetPhysicalVolume() 116 { 117 return sPhysicalVolumePtr; 118 } 119 120 inline 121 const G4AffineTransform& 122 G4NavigationLevelRep::GetTransform() const 123 { 124 return sTransform; 125 } 126 127 inline 128 const G4AffineTransform* 129 G4NavigationLevelRep::GetTransformPtr() const 130 { 131 return &sTransform; 132 } 133 134 inline 135 EVolume G4NavigationLevelRep::GetVolumeType() 136 { 137 return sVolumeType; 138 } 139 140 inline 141 G4int G4NavigationLevelRep::GetReplicaNo() con 142 { 143 return sReplicaNo; 144 } 145 146 inline 147 void G4NavigationLevelRep::AddAReference() 148 { 149 ++fCountRef; 150 } 151 152 inline 153 G4bool G4NavigationLevelRep::RemoveAReference( 154 { 155 return( --fCountRef <= 0 ); 156 } 157 158 // There is no provision that this class is su 159 // If it is subclassed & new data members are 160 // following "new" & "delete" will fail and gi 161 // 162 inline 163 void* G4NavigationLevelRep::operator new(size_ 164 { 165 if (aNavigLevelRepAllocator() == nullptr) 166 { 167 aNavigLevelRepAllocator() = new G4Allocato 168 } 169 return (void *) aNavigLevelRepAllocator()->M 170 } 171 172 inline 173 void G4NavigationLevelRep::operator delete(voi 174 { 175 aNavigLevelRepAllocator()->FreeSingle((G4Nav 176 } 177