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. * 20 // * By using, copying, modifying or distri 20 // * By using, copying, modifying or distributing the software (or * 21 // * any work based on the software) you ag 21 // * any work based on the software) you agree to acknowledge its * 22 // * use in resulting scientific publicati 22 // * use in resulting scientific publications, and indicate your * 23 // * acceptance of all terms of the Geant4 Sof 23 // * acceptance of all terms of the Geant4 Software license. * 24 // ******************************************* 24 // ******************************************************************** 25 // 25 // 26 /* 26 /* 27 * G4ITNavigatorState2.cc 27 * G4ITNavigatorState2.cc 28 * 28 * 29 * Created on: 25 févr. 2014 29 * Created on: 25 févr. 2014 30 * Author: kara 30 * Author: kara 31 */ 31 */ 32 32 33 #include "G4ITNavigator.hh" 33 #include "G4ITNavigator.hh" 34 //#include "G4ITNavigator2.hh" 34 //#include "G4ITNavigator2.hh" 35 35 36 // !> 36 // !> 37 37 38 G4ITNavigator2 ::G4NavigatorState::G4Navigator << 38 G4ITNavigator2 ::G4NavigatorState::G4NavigatorState() : >> 39 G4ITNavigatorState_Lock2() 39 { 40 { 40 ResetState(); 41 ResetState(); 41 } 42 } 42 43 43 void G4ITNavigator2::G4NavigatorState::ResetSt 44 void G4ITNavigator2::G4NavigatorState::ResetStack() 44 { 45 { 45 fHistory.Reset(); 46 fHistory.Reset(); 46 } 47 } 47 48 48 void G4ITNavigator2::G4NavigatorState::ResetSt 49 void G4ITNavigator2::G4NavigatorState::ResetState() 49 { 50 { 50 fCalculatedExitNormal = false; 51 fCalculatedExitNormal = false; 51 fChangedGrandMotherRefFrame = false; 52 fChangedGrandMotherRefFrame = false; 52 fLastTriedStepComputation = false; 53 fLastTriedStepComputation = false; 53 fWasLimitedByGeometry = false; 54 fWasLimitedByGeometry = false; 54 fEntering = false; 55 fEntering = false; 55 fExiting = false; 56 fExiting = false; 56 fLocatedOnEdge = false; 57 fLocatedOnEdge = false; 57 fLastStepWasZero = false; 58 fLastStepWasZero = false; 58 fEnteredDaughter = false; 59 fEnteredDaughter = false; 59 fExitedMother = false; 60 fExitedMother = false; 60 fPushed = false; 61 fPushed = false; 61 62 62 fValidExitNormal = false; 63 fValidExitNormal = false; 63 fExitNormal = G4ThreeVector(0, 0, 0); 64 fExitNormal = G4ThreeVector(0, 0, 0); 64 65 65 fPreviousSftOrigin = G4ThreeVector(0, 0, 0); 66 fPreviousSftOrigin = G4ThreeVector(0, 0, 0); 66 fPreviousSafety = 0.0; 67 fPreviousSafety = 0.0; 67 68 68 fNumberZeroSteps = 0; 69 fNumberZeroSteps = 0; 69 70 70 fStepEndPoint = G4ThreeVector(kInfinity, kIn 71 fStepEndPoint = G4ThreeVector(kInfinity, kInfinity, kInfinity); 71 fLastStepEndPointLocal = G4ThreeVector(kInfi 72 fLastStepEndPointLocal = G4ThreeVector(kInfinity, kInfinity, kInfinity); 72 73 73 fBlockedPhysicalVolume = nullptr; << 74 fBlockedPhysicalVolume = 0; 74 fBlockedReplicaNo = -1; 75 fBlockedReplicaNo = -1; 75 76 76 fLastLocatedPointLocal = G4ThreeVector(kInfi 77 fLastLocatedPointLocal = G4ThreeVector(kInfinity, -kInfinity, 0.0); 77 fLocatedOutsideWorld = false; 78 fLocatedOutsideWorld = false; 78 } 79 } 79 80 80 G4ITNavigator2 ::G4NavigatorState::G4Navigator << 81 G4ITNavigator2 ::G4NavigatorState::G4NavigatorState(const G4NavigatorState& rhs) : >> 82 G4ITNavigatorState_Lock2() 81 { 83 { 82 fExitNormal = rhs.fExitNormal; 84 fExitNormal = rhs.fExitNormal; 83 fValidExitNormal = rhs.fValidExitNormal; 85 fValidExitNormal = rhs.fValidExitNormal; 84 fExiting = rhs.fExiting; 86 fExiting = rhs.fExiting; 85 fEntering = rhs.fEntering; 87 fEntering = rhs.fEntering; 86 88 87 fBlockedPhysicalVolume = rhs.fBlockedPhysica 89 fBlockedPhysicalVolume = rhs.fBlockedPhysicalVolume; 88 fBlockedReplicaNo = rhs.fBlockedReplicaNo, 90 fBlockedReplicaNo = rhs.fBlockedReplicaNo, 89 91 90 fLastStepWasZero = rhs.fLastStepWasZero; 92 fLastStepWasZero = rhs.fLastStepWasZero; 91 93 92 fLocatedOutsideWorld = rhs.fLocatedOutsideWo 94 fLocatedOutsideWorld = rhs.fLocatedOutsideWorld; 93 fLastLocatedPointLocal = rhs.fLastLocatedPoi 95 fLastLocatedPointLocal = rhs.fLastLocatedPointLocal; 94 fEnteredDaughter = rhs.fEnteredDaughter; 96 fEnteredDaughter = rhs.fEnteredDaughter; 95 fExitedMother = rhs.fExitedMother; 97 fExitedMother = rhs.fExitedMother; 96 fWasLimitedByGeometry = rhs.fWasLimitedByGeo 98 fWasLimitedByGeometry = rhs.fWasLimitedByGeometry; 97 99 98 fPreviousSftOrigin = rhs.fPreviousSftOrigin; 100 fPreviousSftOrigin = rhs.fPreviousSftOrigin; 99 fPreviousSafety = rhs.fPreviousSafety; 101 fPreviousSafety = rhs.fPreviousSafety; 100 102 101 fLastTriedStepComputation = rhs.fLastTriedSt 103 fLastTriedStepComputation = rhs.fLastTriedStepComputation; 102 fChangedGrandMotherRefFrame = rhs.fChangedGr 104 fChangedGrandMotherRefFrame = rhs.fChangedGrandMotherRefFrame; 103 fCalculatedExitNormal = rhs.fCalculatedExitN 105 fCalculatedExitNormal = rhs.fCalculatedExitNormal; 104 106 105 fNumberZeroSteps = rhs.fNumberZeroSteps; 107 fNumberZeroSteps = rhs.fNumberZeroSteps; 106 fLocatedOnEdge = rhs.fLocatedOnEdge; 108 fLocatedOnEdge = rhs.fLocatedOnEdge; 107 fPushed = rhs.fPushed; 109 fPushed = rhs.fPushed; 108 fNumberZeroSteps = rhs.fNumberZeroSteps; 110 fNumberZeroSteps = rhs.fNumberZeroSteps; 109 } 111 } 110 112 111 G4ITNavigator2::G4NavigatorState& 113 G4ITNavigator2::G4NavigatorState& 112 G4ITNavigator2::G4NavigatorState::operator=(co 114 G4ITNavigator2::G4NavigatorState::operator=(const G4NavigatorState& rhs) 113 { 115 { 114 if (this == &rhs) return *this; 116 if (this == &rhs) return *this; 115 fExitNormal = rhs.fExitNormal; 117 fExitNormal = rhs.fExitNormal; 116 fValidExitNormal = rhs.fValidExitNormal; 118 fValidExitNormal = rhs.fValidExitNormal; 117 fExiting = rhs.fExiting; 119 fExiting = rhs.fExiting; 118 fEntering = rhs.fEntering; 120 fEntering = rhs.fEntering; 119 121 120 fBlockedPhysicalVolume = rhs.fBlockedPhysica 122 fBlockedPhysicalVolume = rhs.fBlockedPhysicalVolume; 121 fBlockedReplicaNo = rhs.fBlockedReplicaNo; 123 fBlockedReplicaNo = rhs.fBlockedReplicaNo; 122 fCalculatedExitNormal = rhs.fCalculatedExitN 124 fCalculatedExitNormal = rhs.fCalculatedExitNormal; 123 125 124 fLastStepWasZero = rhs.fLastStepWasZero; 126 fLastStepWasZero = rhs.fLastStepWasZero; 125 fLastTriedStepComputation = rhs.fLastTriedSt 127 fLastTriedStepComputation = rhs.fLastTriedStepComputation; 126 fChangedGrandMotherRefFrame = rhs.fChangedGr 128 fChangedGrandMotherRefFrame = rhs.fChangedGrandMotherRefFrame; 127 129 128 fPreviousSftOrigin = rhs.fPreviousSftOrigin; 130 fPreviousSftOrigin = rhs.fPreviousSftOrigin; 129 fPreviousSafety = rhs.fPreviousSafety; 131 fPreviousSafety = rhs.fPreviousSafety; 130 fNumberZeroSteps = rhs.fNumberZeroSteps; 132 fNumberZeroSteps = rhs.fNumberZeroSteps; 131 fLocatedOnEdge = rhs.fLocatedOnEdge; 133 fLocatedOnEdge = rhs.fLocatedOnEdge; 132 fWasLimitedByGeometry = rhs.fWasLimitedByGeo 134 fWasLimitedByGeometry = rhs.fWasLimitedByGeometry; 133 fPushed = rhs.fPushed; 135 fPushed = rhs.fPushed; 134 fNumberZeroSteps = rhs.fNumberZeroSteps; 136 fNumberZeroSteps = rhs.fNumberZeroSteps; 135 fEnteredDaughter = rhs.fEnteredDaughter; 137 fEnteredDaughter = rhs.fEnteredDaughter; 136 fExitedMother = rhs.fExitedMother; 138 fExitedMother = rhs.fExitedMother; 137 139 138 fLastLocatedPointLocal = rhs.fLastLocatedPoi 140 fLastLocatedPointLocal = rhs.fLastLocatedPointLocal; 139 fLocatedOutsideWorld = rhs.fLocatedOutsideWo 141 fLocatedOutsideWorld = rhs.fLocatedOutsideWorld; 140 142 141 return *this; 143 return *this; 142 } 144 } 143 145 144 G4ITNavigator2 ::G4SaveNavigatorState::G4SaveN 146 G4ITNavigator2 ::G4SaveNavigatorState::G4SaveNavigatorState() 145 { 147 { 146 148 147 sWasLimitedByGeometry = false; 149 sWasLimitedByGeometry = false; 148 sEntering = false; 150 sEntering = false; 149 sExiting = false; 151 sExiting = false; 150 sLastStepWasZero = 0; << 152 sLastStepWasZero = false; 151 sEnteredDaughter = false; 153 sEnteredDaughter = false; 152 sExitedMother = false; 154 sExitedMother = false; 153 155 154 156 155 sValidExitNormal = false; 157 sValidExitNormal = false; 156 sExitNormal = G4ThreeVector(0, 0, 0); 158 sExitNormal = G4ThreeVector(0, 0, 0); 157 159 158 sPreviousSftOrigin = G4ThreeVector(0, 0, 0); 160 sPreviousSftOrigin = G4ThreeVector(0, 0, 0); 159 sPreviousSafety = 0.0; 161 sPreviousSafety = 0.0; 160 162 161 // sLocatedOnEdge = false; 163 // sLocatedOnEdge = false; 162 // sPushed = false; 164 // sPushed = false; 163 // sNumberZeroSteps = 0; 165 // sNumberZeroSteps = 0; 164 166 165 spBlockedPhysicalVolume = nullptr; << 167 spBlockedPhysicalVolume = 0; 166 sBlockedReplicaNo = -1; 168 sBlockedReplicaNo = -1; 167 169 168 sLastLocatedPointLocal = G4ThreeVector(kInfi 170 sLastLocatedPointLocal = G4ThreeVector(kInfinity, -kInfinity, 0.0); 169 sLocatedOutsideWorld = false; 171 sLocatedOutsideWorld = false; 170 } 172 } 171 173 172 G4ITNavigator2 ::G4SaveNavigatorState::G4SaveN 174 G4ITNavigator2 ::G4SaveNavigatorState::G4SaveNavigatorState(G4NavigatorState* rhs) 173 { 175 { 174 sExitNormal = rhs->fExitNormal; 176 sExitNormal = rhs->fExitNormal; 175 sValidExitNormal = rhs->fValidExitNormal; 177 sValidExitNormal = rhs->fValidExitNormal; 176 sExiting = rhs->fExiting; 178 sExiting = rhs->fExiting; 177 sEntering = rhs->fEntering; 179 sEntering = rhs->fEntering; 178 180 179 spBlockedPhysicalVolume = rhs->fBlockedPhysi 181 spBlockedPhysicalVolume = rhs->fBlockedPhysicalVolume; 180 sBlockedReplicaNo = rhs->fBlockedReplicaNo; 182 sBlockedReplicaNo = rhs->fBlockedReplicaNo; 181 183 182 sLastStepWasZero = static_cast<G4int>(rhs->f << 184 sLastStepWasZero = rhs->fLastStepWasZero; 183 185 184 sPreviousSftOrigin = rhs->fPreviousSftOrigin 186 sPreviousSftOrigin = rhs->fPreviousSftOrigin; 185 sPreviousSafety = rhs->fPreviousSafety; 187 sPreviousSafety = rhs->fPreviousSafety; 186 188 187 sWasLimitedByGeometry = rhs->fWasLimitedByGe 189 sWasLimitedByGeometry = rhs->fWasLimitedByGeometry; 188 190 189 // sLocatedOnEdge = rhs->fLocatedOnEdge; 191 // sLocatedOnEdge = rhs->fLocatedOnEdge; 190 // sPushed = rhs->fPushed; 192 // sPushed = rhs->fPushed; 191 // sNumberZeroSteps = rhs->fNumberZeroSteps; 193 // sNumberZeroSteps = rhs->fNumberZeroSteps; 192 194 193 sEnteredDaughter = rhs->fEnteredDaughter; 195 sEnteredDaughter = rhs->fEnteredDaughter; 194 sExitedMother = rhs->fExitedMother; 196 sExitedMother = rhs->fExitedMother; 195 197 196 sLastLocatedPointLocal = rhs->fLastLocatedPo 198 sLastLocatedPointLocal = rhs->fLastLocatedPointLocal; 197 sLocatedOutsideWorld = rhs->fLocatedOutsideW 199 sLocatedOutsideWorld = rhs->fLocatedOutsideWorld; 198 } 200 } 199 201 200 G4ITNavigator2::G4NavigatorState& G4ITNavigato 202 G4ITNavigator2::G4NavigatorState& G4ITNavigator2::G4NavigatorState::operator=(const G4SaveNavigatorState& rhs) 201 { 203 { 202 fExitNormal = rhs.sExitNormal; 204 fExitNormal = rhs.sExitNormal; 203 fValidExitNormal = rhs.sValidExitNormal; 205 fValidExitNormal = rhs.sValidExitNormal; 204 fExiting = rhs.sExiting; 206 fExiting = rhs.sExiting; 205 fEntering = rhs.sEntering; 207 fEntering = rhs.sEntering; 206 208 207 fBlockedPhysicalVolume = rhs.spBlockedPhysic 209 fBlockedPhysicalVolume = rhs.spBlockedPhysicalVolume; 208 fBlockedReplicaNo = rhs.sBlockedReplicaNo; 210 fBlockedReplicaNo = rhs.sBlockedReplicaNo; 209 // fCalculatedExitNormal = rhs.sCalculatedExi 211 // fCalculatedExitNormal = rhs.sCalculatedExitNormal; 210 212 211 fLastStepWasZero = (rhs.sLastStepWasZero != << 213 fLastStepWasZero = rhs.sLastStepWasZero; 212 // fLastTriedStepComputation =rhs.sLastTriedS 214 // fLastTriedStepComputation =rhs.sLastTriedStepComputation; 213 // fChangedGrandMotherRefFrame = rhs.sChanged 215 // fChangedGrandMotherRefFrame = rhs.sChangedGrandMotherRefFrame; 214 216 215 fPreviousSftOrigin = rhs.sPreviousSftOrigin; 217 fPreviousSftOrigin = rhs.sPreviousSftOrigin; 216 fPreviousSafety = rhs.sPreviousSafety; 218 fPreviousSafety = rhs.sPreviousSafety; 217 // fNumberZeroSteps = rhs.sNumberZeroSteps; 219 // fNumberZeroSteps = rhs.sNumberZeroSteps; 218 // fLocatedOnEdge = rhs.sLocatedOnEdge; 220 // fLocatedOnEdge = rhs.sLocatedOnEdge; 219 // fPushed = rhs.sPushed; 221 // fPushed = rhs.sPushed; 220 fWasLimitedByGeometry = rhs.sWasLimitedByGeo 222 fWasLimitedByGeometry = rhs.sWasLimitedByGeometry; 221 223 222 fEnteredDaughter = rhs.sEnteredDaughter; 224 fEnteredDaughter = rhs.sEnteredDaughter; 223 fExitedMother = rhs.sExitedMother; 225 fExitedMother = rhs.sExitedMother; 224 226 225 fLastLocatedPointLocal = rhs.sLastLocatedPoi 227 fLastLocatedPointLocal = rhs.sLastLocatedPointLocal; 226 fLocatedOutsideWorld = rhs.sLocatedOutsideWo 228 fLocatedOutsideWorld = rhs.sLocatedOutsideWorld; 227 return *this; 229 return *this; 228 } 230 } 229 231