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 // $Id: G4FastStep.hh,v 1.8 2006/06/29 21:09:14 gunter Exp $ >> 28 // GEANT4 tag $Name: geant4-09-01 $ 27 // 29 // 28 // << 30 // 29 //-------------------------------------------- 31 //--------------------------------------------------------------- 30 // 32 // 31 // G4FastStep.hh 33 // G4FastStep.hh 32 // 34 // 33 // Description: 35 // Description: 34 // The G4FastStep class insures a friendly 36 // The G4FastStep class insures a friendly interface 35 // to manage the primary/secondaries final << 37 // to manage the primary/secondaries final state for 36 // Fast Simulation Models. This includes fi 38 // Fast Simulation Models. This includes final states of parent 37 // particle (normalized direction of the mo << 39 // particle (normalized direction of the momentum, energy, etc) and 38 // secondary particles generated by the par 40 // secondary particles generated by the parameterisation. 39 // 41 // 40 // The G4FastStep class acts also as the G4 42 // The G4FastStep class acts also as the G4ParticleChange 41 // for the Fast Simulation Process. So it i << 43 // for the Fast Simulation Process. So it inherites from 42 // the G4VParticleChange class and redefine << 44 // the G4VParticleChange class and redefines the four virtual 43 // methods : 45 // methods : 44 // 46 // 45 // virtual G4Step* UpdateStepForAtRest(G4S 47 // virtual G4Step* UpdateStepForAtRest(G4Step* Step); 46 // virtual G4Step* UpdateStepForAlongStep( 48 // virtual G4Step* UpdateStepForAlongStep(G4Step* Step); 47 // virtual G4Step* UpdateStepForPostStep(G 49 // virtual G4Step* UpdateStepForPostStep(G4Step* Step); 48 // virtual void Initialize(const G4Track&) 50 // virtual void Initialize(const G4Track&); 49 // 51 // 50 // History: 52 // History: 51 // Oct 97: Verderi && MoraDeFreitas - First 53 // Oct 97: Verderi && MoraDeFreitas - First Implementation. 52 // Dec 97: Verderi - ForceSteppingHitInvoca 54 // Dec 97: Verderi - ForceSteppingHitInvocation(), 53 // Set/GetTotalEnergyDepo 55 // Set/GetTotalEnergyDeposited() methods. 54 // Apr 98: MoraDeFreitas - G4FastStep becom 56 // Apr 98: MoraDeFreitas - G4FastStep becomes the G4ParticleChange 55 // for the Fast Simulatio 57 // for the Fast Simulation Process. 56 // Nov 04: Verderi - Add ProposeXXX methods 58 // Nov 04: Verderi - Add ProposeXXX methods. SetXXX ones are kept 57 // for backward compatibi << 59 // for backward compatibility. 58 // 60 // 59 //-------------------------------------------- 61 //--------------------------------------------------------------- 60 62 >> 63 61 #ifndef G4FastStep_h 64 #ifndef G4FastStep_h 62 #define G4FastStep_h 65 #define G4FastStep_h 63 66 64 #include "G4ParticleMomentum.hh" << 65 #include "G4ThreeVector.hh" << 66 #include "G4ios.hh" << 67 #include "globals.hh" 67 #include "globals.hh" >> 68 #include "G4ios.hh" >> 69 #include "G4ThreeVector.hh" >> 70 #include "G4ParticleMomentum.hh" 68 class G4DynamicParticle; 71 class G4DynamicParticle; 69 #include "G4FastTrack.hh" << 70 #include "G4VParticleChange.hh" 72 #include "G4VParticleChange.hh" >> 73 #include "G4FastTrack.hh" 71 74 72 //------------------------------------------- 75 //------------------------------------------- 73 // 76 // 74 // G4FastStep class 77 // G4FastStep class 75 // 78 // 76 //------------------------------------------- 79 //------------------------------------------- 77 80 78 // Class Description: 81 // Class Description: 79 // The final state of the particles after par << 82 // The final state of the particles after parameterisation has to be returned through a G4FastStep 80 // reference. This final state is described a << 83 // reference. This final state is described as "requests" the tracking will apply after your 81 // parameterisation has been invoked. 84 // parameterisation has been invoked. 82 // 85 // 83 // To facilitate the developers work, changes << 86 // To facilitate the developers work, changes of position/normalized direction of the 84 // momentum/polarization can be specified in << 87 // momentum/polarization can be specified in the local coordinate system of the envelope or in the 85 // global one. 88 // global one. 86 // The default is local system coordinates. 89 // The default is local system coordinates. 87 // 90 // 88 91 89 class G4FastStep : public G4VParticleChange << 92 class G4FastStep: public G4VParticleChange 90 { 93 { 91 public: // Without description << 94 public: // with Description 92 //------------------------ << 95 void KillPrimaryTrack(); 93 // Constructor/Destructor << 96 // Set the kinetic energy of the primary to zero, and set the "fStopAndKill" signal 94 //------------------------ << 97 // used by the stepping. 95 G4FastStep() = default; << 98 96 ~G4FastStep() override = default; << 99 // -- Methods used to change the position, normalized direction of 97 << 100 // the momentum, time etc... of the primary. 98 G4FastStep(const G4FastStep& right) = dele << 101 // .. space and time: 99 G4FastStep& operator=(const G4FastStep& ri << 102 void ProposePrimaryTrackFinalPosition (const G4ThreeVector &, 100 << 103 G4bool localCoordinates = true); 101 // Set the kinetic energy of the primary t << 104 // Set the primary track final position. 102 // used by the stepping. << 105 void SetPrimaryTrackFinalPosition (const G4ThreeVector &, 103 void KillPrimaryTrack(); << 106 G4bool localCoordinates = true); 104 << 107 // Set the primary track final position -- maintained for backward compatibility. 105 // -- Methods used to change the position, << 108 106 // the momentum, time etc... of the primar << 109 107 // .. space and time: << 110 void ProposePrimaryTrackFinalTime (G4double); 108 << 111 // Set the primary track final time. 109 // Set the primary track final position. << 112 void SetPrimaryTrackFinalTime (G4double); 110 void ProposePrimaryTrackFinalPosition(cons << 113 // Set the primary track final time -- maintained for backward compatibility. 111 << 114 112 // Set the primary track final position -- << 115 113 [[deprecated("use ProposePrimaryTrackFinal << 116 void ProposePrimaryTrackFinalProperTime (G4double); 114 void SetPrimaryTrackFinalPosition(const G4 << 117 // Set the primary final track Proper Time. 115 << 118 void SetPrimaryTrackFinalProperTime (G4double); 116 // Set the primary track final time. << 119 // Set the primary final track Proper Time -- maintained for backward compatibility. 117 void ProposePrimaryTrackFinalTime(G4double << 120 118 << 121 119 // Set the primary track final time -- mai << 122 // .. dynamics: 120 [[deprecated("use ProposePrimaryTrackFinal << 123 void ProposePrimaryTrackFinalMomentumDirection (const G4ThreeVector &, 121 void SetPrimaryTrackFinalTime(G4double); << 124 G4bool localCoordinates = true); 122 << 125 // Be careful: the Track Final Momentum means the normalized direction 123 // Set the primary final track Proper Time << 126 // of the momentum! 124 void ProposePrimaryTrackFinalProperTime(G4 << 127 void SetPrimaryTrackFinalMomentum (const G4ThreeVector &, 125 << 128 G4bool localCoordinates = true); 126 // Set the primary final track Proper Time << 129 // Set the primary track final momentum -- maintained for backward compatibility. Same as ProposePrimaryTrackMomentumDirection(...) 127 [[deprecated("use ProposePrimaryTrackPrope << 130 128 void SetPrimaryTrackFinalProperTime(G4doub << 131 129 << 132 void ProposePrimaryTrackFinalKineticEnergy (G4double); 130 // .. dynamics: << 133 // Set the primary track final kinetic energy. 131 << 134 void SetPrimaryTrackFinalKineticEnergy (G4double); 132 // Be careful: the Track Final Momentum me << 135 // Set the primary track final kinetic energy-- maintained for backward compatibility. 133 // of the momentum! << 136 134 void ProposePrimaryTrackFinalMomentumDirec << 137 135 << 138 void ProposePrimaryTrackFinalKineticEnergyAndDirection(G4double, 136 << 139 const G4ThreeVector &, 137 // Set the primary track final momentum -- << 140 G4bool localCoordinates 138 // ProposePrimaryTrackMomentumDirection(.. << 141 = true); 139 [[deprecated("use ProposePrimaryTrackMomen << 142 // Set the primary track final kinetic energy and direction. 140 void SetPrimaryTrackFinalMomentum(const G4 << 143 void SetPrimaryTrackFinalKineticEnergyAndDirection(G4double, 141 << 144 const G4ThreeVector &, 142 // Set the primary track final kinetic ene << 145 G4bool localCoordinates 143 void ProposePrimaryTrackFinalKineticEnergy << 146 = true); 144 << 147 // Set the primary track final kinetic energy and direction -- maintained for backward compatibility. 145 // Set the primary track final kinetic ene << 148 146 [[deprecated("use ProposePrimaryTrackFinal << 149 147 void SetPrimaryTrackFinalKineticEnergy(G4d << 150 148 << 151 void ProposePrimaryTrackFinalPolarization(const G4ThreeVector &, 149 // Set the primary track final kinetic ene << 152 G4bool localCoordinates = true); 150 void ProposePrimaryTrackFinalKineticEnergy << 153 // Set the primary track final polarization. 151 << 154 void SetPrimaryTrackFinalPolarization(const G4ThreeVector &, 152 << 155 G4bool localCoordinates = true); 153 // Set the primary track final kinetic ene << 156 // Set the primary track final polarization. 154 // compatibility. << 157 155 [[deprecated("use ProposePrimaryTrackFinal << 158 156 void SetPrimaryTrackFinalKineticEnergyAndD << 159 void ProposePrimaryTrackPathLength (G4double); 157 << 160 // Set the true path length of the primary track during the step. 158 << 161 void SetPrimaryTrackPathLength (G4double); 159 // Set the primary track final polarizatio << 162 // Set the true path length of the primary track during the step -- maintained for backward compatibility. 160 void ProposePrimaryTrackFinalPolarization( << 163 161 << 164 void ProposePrimaryTrackFinalEventBiasingWeight (G4double); 162 // Set the primary track final polarizatio << 165 // Set the weight applied for event biasing mechanism. 163 [[deprecated("use ProposePrimaryTrackFinal << 166 void SetPrimaryTrackFinalEventBiasingWeight (G4double); 164 void SetPrimaryTrackFinalPolarization(cons << 167 // Set the weight applied for event biasing mechanism -- kept for backward compatibility. 165 << 168 166 // Set the true path length of the primary << 169 // ------------------------------ 167 void ProposePrimaryTrackPathLength(G4doubl << 170 // -- Management of secondaries: 168 << 171 // ------------------------------ 169 // Set the true path length of the primary << 172 170 // compatibility. << 173 // ---------------------------------------------------- 171 [[deprecated("use ProposePrimaryTrackPathL << 174 // -- The creation of secondaries is Done in two steps: 172 void SetPrimaryTrackPathLength(G4double); << 175 // -- 1) Give the total number of secondaries 173 << 176 // -- that the FastStep returns 174 // Set the weight applied for event biasin << 177 // -- to the tracking using: 175 void ProposePrimaryTrackFinalEventBiasingW << 178 // -- SetNumberOfSecondaryTracks() 176 << 179 // -- 177 // Set the weight applied for event biasin << 180 // -- 2) Invoke the CreateSecondaryTrack() method 178 [[deprecated("use ProposePrimaryTrackFinal << 181 // -- to create one secondary at each time. 179 void SetPrimaryTrackFinalEventBiasingWeigh << 182 // ---------------------------------------------------- 180 << 183 181 // ------------------------------ << 184 // -- Total Number of secondaries to be created, 182 // -- Management of secondaries: << 185 // -- (to be called first) 183 // ------------------------------ << 186 void SetNumberOfSecondaryTracks(G4int); 184 << 187 // Set the total number of secondaries that will be created. 185 // --------------------------------------- << 188 186 // -- The creation of secondaries is Done << 189 // -- Number of secondaries effectively stored: 187 // -- 1) Give the total number of sec << 190 // -- (incremented at each CreateSecondaryTrack() 188 // -- that the FastStep returns << 191 // -- call) 189 // -- to the tracking using: << 192 G4int GetNumberOfSecondaryTracks(); 190 // -- SetNumberOfSecondaryTracks() << 193 // Returns the number of secondaries effectively stored. 191 // -- << 194 192 // -- 2) Invoke the CreateSecondaryTr << 195 // -- Create a secondary: the arguments are: 193 // -- to create one secondary at e << 196 // -- * G4DynamicsParticle: see header file, many constructors exist 194 // --------------------------------------- << 197 // -- (allow to set particle type + energy + 195 << 198 // -- the normalized direction of momentum...) 196 // Set the total number of secondaries tha << 199 // -- * G4ThreeVector : Polarization (not in G4ParticleChange constructor) 197 // -- Total Number of secondaries to be cr << 200 // -- * G4ThreeVector : Position 198 // -- (to be called first) << 201 // -- * G4double : Time 199 void SetNumberOfSecondaryTracks(G4int); << 202 // -- * G4bool : says if Position/Momentum are given in the 200 << 203 // -- local coordinate system (true by default) 201 // Returns the number of secondaries effec << 204 // -- Returned value: pointer to the track created. 202 // -- Number of secondaries effectively st << 205 G4Track* CreateSecondaryTrack(const G4DynamicParticle&, 203 // -- (incremented at each CreateSecondary << 206 G4ThreeVector, 204 // -- call) << 207 G4ThreeVector, 205 G4int GetNumberOfSecondaryTracks(); << 208 G4double, 206 << 209 G4bool localCoordinates=true); 207 // -- Create a secondary: the arguments ar << 210 // Create a secondary. The arguments are: 208 // -- * G4DynamicsParticle: see header << 211 // 209 // -- (allow to << 212 // G4DynamicsParticle: see the G4DynamicsParticle reference, many constructors exist 210 // -- the normalized direction of momentum << 213 // (allow to set particle type + energy + the normalized direction of 211 // -- * G4ThreeVector : Polarizati << 214 // momentum...); 212 // -- * G4ThreeVector : Position << 215 // G4ThreeVector : Polarization; 213 // -- * G4double : Time << 216 // G4ThreeVector : Position; 214 // -- * G4bool : says if Po << 217 // G4double : Time; 215 // -- local coor << 218 // G4bool : says if Position/Momentum are given in the local envelope coordinate 216 // -- Returned value: pointer to the track << 219 // system (true by default). 217 G4Track* CreateSecondaryTrack(const G4Dyna << 220 // 218 G4bool local << 221 // Returned value: pointer to the track created. 219 << 222 // 220 //-- Create a secondary: the difference wi << 223 221 //-- is that the Polarization is not given << 224 //-- Create a secondary: the difference with he above declaration 222 //-- in the G4DynamicParticle. << 225 //-- is that the Polarization is not given and is assumed already set 223 //-- Returned value: pointer to the track << 226 //-- in the G4DynamicParticle. 224 G4Track* CreateSecondaryTrack(const G4Dyna << 227 //-- Returned value: pointer to the track created 225 G4bool local << 228 G4Track* CreateSecondaryTrack(const G4DynamicParticle&, 226 << 229 G4ThreeVector, 227 // Returns a pointer on the i-th secondary << 230 G4double, 228 G4Track* GetSecondaryTrack(G4int); << 231 G4bool localCoordinates=true); 229 << 232 // Create a secondary. The difference with he above declaration is that the Polarization is not 230 //---------------------------------------- << 233 // given and is assumed already set in the G4DynamicParticle. 231 // << 234 // 232 // Total energy deposit in the "fast Ste << 235 // Returned value: pointer to the track created 233 // (a default should be provided in futu << 236 234 // which can be: << 237 235 // delta energy of primary - << 238 236 // energy of the secondaries) << 239 G4Track* GetSecondaryTrack(G4int); 237 // This allow the user to Store a consis << 240 // Returns a pointer on the i-th secondary track created. 238 // information in the G4Trajectory. << 241 239 // << 242 //------------------------------------------------ 240 //---------------------------------------- << 243 // 241 // Set the total energy deposited. << 244 // Total energy deposit in the "fast Step" 242 void ProposeTotalEnergyDeposited(G4double << 245 // (a default should be provided in future, 243 << 246 // which can be: 244 // Set the total energy deposited -- kept << 247 // delta energy of primary - 245 // It should be the delta energy of primar << 248 // energy of the secondaries) 246 [[deprecated("use ProposeTotalEnergyDeposi << 249 // This allow the user to Store a consistent 247 void SetTotalEnergyDeposited(G4double anEn << 250 // information in the G4Trajectory. 248 << 251 // 249 // Returns the total energy deposited. << 252 //------------------------------------------------ 250 G4double GetTotalEnergyDeposited() const; << 253 void ProposeTotalEnergyDeposited(G4double anEnergyPart); 251 << 254 // Set the total energy deposited. 252 // Control of the stepping manager Hit inv << 255 void SetTotalEnergyDeposited(G4double anEnergyPart); 253 // << 256 // Set the total energy deposited -- kept for backward compatibility. 254 // In a usual parameterisation, the contro << 257 // It should be the delta energy of primary less the energy of the secondaries. 255 // responsability in his G4VFastSimulation << 258 256 // << 259 G4double GetTotalEnergyDeposited() const; 257 // However, in the particular case the G4F << 260 // Returns the total energy deposited. 258 // replacement only (ie replaces all the * << 261 259 // G4Step), the user can delegate to the G << 262 void ForceSteppingHitInvocation(); 260 // the Hit()method of the current sensitiv << 263 // Control of the stepping manager Hit invocation. 261 // << 264 // 262 // By default, the G4SteppingManager is as << 265 // In a usual parameterisation, the control of the hits production is under the user 263 // parameterisation is invoked. << 266 // responsability in his G4VFastSimulationModel (he generally produces several hits at once.) 264 void ForceSteppingHitInvocation(); << 267 // 265 << 268 // However, in the particular case the G4FastSimulation user's model acts as the physics 266 // ======================================= << 269 // replacement only (ie replaces all the ***DoIt() and leads to the construction of a meaningful 267 // Stepping interface. << 270 // G4Step), the user can delegate to the G4SteppingManager the responsability to invoke 268 // ======================================= << 271 // the Hit()method of the current sensitive if any. 269 // --- the following methods are for updat << 272 // 270 // Return the pointer to the G4Step after << 273 // By default, the G4SteppingManager is asked to NOT invoke this Hit() method when parameterisation 271 // by using final state information of the << 274 // is invoked. 272 // << 275 // 273 // The Fast Simulation Mechanism doesn't c << 276 274 // state on the AlongDoIt loop, so the def << 277 275 // virtual G4Step* UpdateStepForAlongStep( << 278 public: // Without description 276 << 279 //======================================================= 277 G4Step* UpdateStepForAtRest(G4Step* Step) << 280 // Implementation section and kernel interfaces. 278 G4Step* UpdateStepForPostStep(G4Step* Step << 281 //======================================================= 279 << 282 //------------------------ 280 // A Model gives the final state of the pa << 283 // Constructor/Destructor 281 // based on information of G4FastTrack. So << 284 //------------------------ 282 // Initialize method is an interface to th << 285 G4FastStep(); 283 // G4FastSimulationManager to Initialize t << 286 virtual ~G4FastStep(); 284 // G4FastStep. << 287 285 << 288 // equal/unequal operator 286 void Initialize(const G4FastTrack&); << 289 G4bool operator==(const G4FastStep &right) const; 287 << 290 G4bool operator!=(const G4FastStep &right) const; 288 // for Debug << 291 289 void DumpInfo() const override; << 292 protected: 290 G4bool CheckIt(const G4Track&) override; << 293 // hide copy constructor and assignment operator as protected 291 << 294 G4FastStep (const G4FastStep &right); 292 private: << 295 G4FastStep & operator= (const G4FastStep &right); 293 //======================================== << 296 294 // Private Internal methods (implementatio << 297 public: 295 //======================================== << 298 // =============================================== 296 << 299 // Stepping interface. 297 // G4FastStep should never be Initialized << 300 // =============================================== 298 // but we must define it to avoid compiler << 301 // --- the following methods are for updating G4Step ----- 299 void Initialize(const G4Track&) override; << 302 // Return the pointer to the G4Step after updating the Step information 300 << 303 // by using final state information of the track given by a Model. 301 // -- Utility functions -- << 304 // 302 //--- methods to keep information of the f << 305 // The Fast Simulation Mechanism doesn't change the track's final 303 // IMPORTANT NOTE: Although the name of t << 306 // state on the AlongDoIt loop, so the default one all we need. 304 // "Change", what it stores (and returns << 307 //virtual G4Step* UpdateStepForAlongStep(G4Step* Step); 305 // values of the Position, the normalize << 308 306 // etc. << 309 G4Step* UpdateStepForAtRest(G4Step* Step); 307 << 310 G4Step* UpdateStepForPostStep(G4Step* Step); 308 // Set theMomentumChange vector: it is the << 311 309 // direction. << 312 // A Model gives the final state of the particle 310 void SetMomentumChange(G4double Px, G4doub << 313 // based on information of G4FastTrack. So the 311 void SetMomentumChange(const G4ThreeVector << 314 // Initialize method is an interface to the 312 << 315 // G4FastSimulationManager to Initialize the 313 //======================================== << 316 // G4FastStep. 314 // Data members. << 317 315 //======================================== << 318 void Initialize(const G4FastTrack&); 316 // theMomentumChange is the vector contai << 319 317 // direction after the invoked process. T << 320 private: 318 // of the momentum direction of the parti << 321 //=================================================== 319 // The responsibility to apply the change << 322 // Private Internal methods (implementation). 320 // which invoked the process. << 323 //=================================================== 321 G4ParticleMomentum theMomentumChange; << 324 322 << 325 // G4FastStep should never be Initialized in this way 323 // The changed (final) polarization of a << 326 // but we must define it to avoid compiler warnings. 324 G4ThreeVector thePolarizationChange; << 327 void Initialize(const G4Track&); 325 << 328 326 // The final kinetic energy of the curren << 329 // -- Utility functions -- 327 G4double theEnergyChange = 0.0; << 330 //--- methods to keep information of the final state-- 328 << 331 // IMPORTANT NOTE: Although the name of the class and methods are 329 // The changed (final) position of a give << 332 // "Change", what it stores (and returns in get) are the "FINAL" 330 G4ThreeVector thePositionChange; << 333 // values of the Position, the normalized direction of Momentum, 331 << 334 // etc. 332 // The changed (final) global time of a g << 335 333 G4double theTimeChange = 0.0; << 336 // Set theMomentumChange vector: it is the final unitary momentum 334 << 337 // direction. 335 // The changed (final) proper time of a g << 338 void SetMomentumChange(G4double Px, G4double Py, G4double Pz); 336 G4double theProperTimeChange = 0.0; << 339 void SetMomentumChange(const G4ThreeVector& Pfinal); 337 << 340 338 // The reference G4FastTrack << 341 //===================================================== 339 const G4FastTrack* fFastTrack = nullptr; << 342 // Data members. 340 << 343 //===================================================== 341 // weight for event biasing mechanism: << 344 // theMomentumChange is the vector containing the final momentum 342 G4double theWeightChange = 0.0; << 345 // direction after the invoked process. The application of the change >> 346 // of the momentum direction of the particle is not Done here. >> 347 // The responsibility to apply the change is up the entity >> 348 // which invoked the process. >> 349 G4ParticleMomentum theMomentumChange; >> 350 >> 351 // The changed (final) polarization of a given particle. >> 352 G4ThreeVector thePolarizationChange; >> 353 >> 354 // The final kinetic energy of the current particle. >> 355 G4double theEnergyChange; >> 356 >> 357 // The changed (final) position of a given particle. >> 358 G4ThreeVector thePositionChange; >> 359 >> 360 // The changed (final) global time of a given particle. >> 361 G4double theTimeChange; >> 362 >> 363 // The changed (final) proper time of a given particle. >> 364 G4double theProperTimeChange; >> 365 >> 366 // The reference G4FastTrack >> 367 const G4FastTrack* fFastTrack; >> 368 >> 369 // weight for event biasing mechanism: >> 370 G4double theWeightChange; >> 371 >> 372 >> 373 public: >> 374 // for Debug >> 375 void DumpInfo() const; >> 376 G4bool CheckIt(const G4Track&); 343 }; 377 }; 344 378 345 //******************************************** 379 //******************************************************************* 346 // 380 // 347 // Inline functions 381 // Inline functions 348 // 382 // 349 //******************************************** 383 //******************************************************************* 350 384 351 #include "G4FastStep.icc" 385 #include "G4FastStep.icc" 352 386 353 #endif 387 #endif 354 388