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 // G4ParticleChange 27 // 28 // Class description: 29 // 30 // Concrete class for ParticleChange containin 31 // invocation of a physics process. 32 // This includes final states of parent partic 33 // etc) and secondary particles generated by t 34 // The tracking assumes that all the values of 35 // are in global reference system, therefore a 36 // transformations must have been already comp 37 // data-members of this class. 38 // 39 // IMPORTANT NOTE: Despite the name, what this 40 // through its methods, are the "FINAL" values 41 // Momentum, etc. 42 43 // Author: Hisaya Kurashige, 23 March 1998 44 // ------------------------------------------- 45 #ifndef G4ParticleChange_hh 46 #define G4ParticleChange_hh 1 47 48 #include "globals.hh" 49 #include "G4ios.hh" 50 #include "G4ThreeVector.hh" 51 #include "G4VParticleChange.hh" 52 53 class G4DynamicParticle; 54 55 class G4ParticleChange : public G4VParticleCha 56 { 57 public: 58 59 G4ParticleChange(); 60 // Default constructor 61 62 ~G4ParticleChange() override = default; 63 // Destructor 64 65 G4ParticleChange(const G4ParticleChange& r 66 G4ParticleChange& operator=(const G4Partic 67 68 // --- the following methods are for updatin 69 // Return the pointer to G4Step after updati 70 // by using final state of the track given b 71 72 G4Step* UpdateStepForAlongStep(G4Step* Ste 73 // A physics process gives the final sta 74 // relative to the initial state at the 75 // i.e., based on information of G4Track 76 // the PreStepPoint). 77 // In this method, the differences (delt 78 // are calculated, and are accumulated i 79 // Take note that the return type of Get 80 // pointer to G4ParticleMomentum. Also i 81 // momentum vector 82 83 G4Step* UpdateStepForAtRest(G4Step* Step) 84 G4Step* UpdateStepForPostStep(G4Step* Step 85 // A physics process gives the final sta 86 // based on information of G4Track (or e 87 88 void Initialize(const G4Track&) override; 89 // Initialize all propoerties by using G 90 91 // --- methods to keep information of the fi 92 // 93 // The ProposeXXX methods store (and return 94 // the "FINAL" values of the Position, Mome 95 96 inline const G4ThreeVector* GetMomentumDir 97 inline void ProposeMomentumDirection(G4dou 98 inline void ProposeMomentumDirection(const 99 // Get/Propose the MomentumDirection vec 100 // direction 101 102 inline const G4ThreeVector* GetPolarizatio 103 inline void ProposePolarization(G4double P 104 inline void ProposePolarization(const G4Th 105 // Get/Propose the final Polarization ve 106 107 inline G4double GetEnergy() const; 108 inline void ProposeEnergy(G4double finalEn 109 // Get/Propose the final kinetic energy 110 111 inline G4double GetVelocity() const; 112 inline void ProposeVelocity(G4double final 113 // Get/Propose the final velocity of the 114 115 inline G4double GetProperTime() const; 116 inline void ProposeProperTime(G4double fin 117 // Get/Propose the final ProperTime 118 119 inline const G4ThreeVector* GetPosition() 120 inline void ProposePosition(G4double x, G4 121 inline void ProposePosition(const G4ThreeV 122 // Get/Propose the final position of the 123 124 inline void ProposeGlobalTime(G4double t); 125 inline void ProposeLocalTime(G4double t); 126 // Get/Propose the final global/local Ti 127 // NOTE: DO NOT INVOKE both methods in a 128 // Each method affects both local 129 130 inline G4double GetGlobalTime(G4double tim 131 inline G4double GetLocalTime(G4double time 132 // Convert the time delay to the glocbal 133 // Can get the final global/local time w 134 135 inline G4double GetMass() const; 136 inline void ProposeMass(G4double finalMass 137 // Get/Propose the final dynamical mass 138 139 inline G4double GetCharge() const; 140 inline void ProposeCharge(G4double finalCh 141 // Get/Propose the final dynamical charg 142 143 inline G4double GetMagneticMoment() const; 144 inline void ProposeMagneticMoment(G4double 145 // Get/Propose the final MagneticMoment 146 147 inline G4ThreeVector 148 GetGlobalPosition(const G4ThreeVector& dis 149 // Convert the position displacement to 150 151 inline G4ThreeVector CalcMomentum(G4double 152 G4double 153 // Calculate momentum by using Energy, M 154 155 // --- methods for adding secondaries --- 156 157 void AddSecondary(G4Track* aSecondary); 158 // Add a secondary particle to theListOf 159 160 void AddSecondary(G4DynamicParticle* aSeco 161 G4bool IsGoodForTracking 162 // Add a secondary particle to theListOf 163 // Position and time are same as thePosi 164 165 void AddSecondary(G4DynamicParticle* aSeco 166 G4bool IsGoodForTracking 167 // Add a secondary particle to theListOf 168 // Global time are same as theTimeChange 169 170 void AddSecondary(G4DynamicParticle* aSeco 171 G4bool IsGoodForTracking 172 // Add a secondary particle to theListOf 173 // Position and are same as thePositionC 174 175 // --- Dump and debug methods --- 176 177 void DumpInfo() const override; 178 179 protected: 180 181 G4Step* UpdateStepInfo(G4Step* Step); 182 // Update the G4Step specific attributes 183 // (i.e. SteppingControl, LocalEnergyDep 184 185 G4ThreeVector theMomentumDirectionChange; 186 // It is the vector containing the final 187 // after the invoked process. The applic 188 // of the momentum direction of the part 189 // The responsibility to apply the chang 190 // which invoked the process 191 192 G4ThreeVector thePolarizationChange; 193 // The changed (final) polarization of a 194 195 G4double theEnergyChange = 0.0; 196 // The final kinetic energy of the curre 197 198 G4double theVelocityChange = 0.0; 199 G4bool isVelocityChanged = false; 200 // The final velocity of the current tra 201 202 G4ThreeVector thePositionChange; 203 // The changed (final) position of a giv 204 205 G4double theGlobalTime0 = 0.0; 206 // The global time at Initial 207 G4double theLocalTime0 = 0.0; 208 // The local time at Initial 209 210 G4double theTimeChange = 0.0; 211 // The change of local time of a given p 212 213 G4double theProperTimeChange = 0.0; 214 // The changed (final) proper time of a 215 216 G4double theMassChange = 0.0; 217 // The Changed (final) mass of a given t 218 219 G4double theChargeChange = 0.0; 220 // The Changed (final) charge of a given 221 222 G4double theMagneticMomentChange = 0.0; 223 // The Changed (final) MagneticMoment of 224 }; 225 226 #include "G4ParticleChange.icc" 227 228 #endif 229