Geant4 Cross Reference

Cross-Referencing   Geant4
Geant4/track/include/G4VParticleChange.hh

Version: [ ReleaseNotes ] [ 1.0 ] [ 1.1 ] [ 2.0 ] [ 3.0 ] [ 3.1 ] [ 3.2 ] [ 4.0 ] [ 4.0.p1 ] [ 4.0.p2 ] [ 4.1 ] [ 4.1.p1 ] [ 5.0 ] [ 5.0.p1 ] [ 5.1 ] [ 5.1.p1 ] [ 5.2 ] [ 5.2.p1 ] [ 5.2.p2 ] [ 6.0 ] [ 6.0.p1 ] [ 6.1 ] [ 6.2 ] [ 6.2.p1 ] [ 6.2.p2 ] [ 7.0 ] [ 7.0.p1 ] [ 7.1 ] [ 7.1.p1 ] [ 8.0 ] [ 8.0.p1 ] [ 8.1 ] [ 8.1.p1 ] [ 8.1.p2 ] [ 8.2 ] [ 8.2.p1 ] [ 8.3 ] [ 8.3.p1 ] [ 8.3.p2 ] [ 9.0 ] [ 9.0.p1 ] [ 9.0.p2 ] [ 9.1 ] [ 9.1.p1 ] [ 9.1.p2 ] [ 9.1.p3 ] [ 9.2 ] [ 9.2.p1 ] [ 9.2.p2 ] [ 9.2.p3 ] [ 9.2.p4 ] [ 9.3 ] [ 9.3.p1 ] [ 9.3.p2 ] [ 9.4 ] [ 9.4.p1 ] [ 9.4.p2 ] [ 9.4.p3 ] [ 9.4.p4 ] [ 9.5 ] [ 9.5.p1 ] [ 9.5.p2 ] [ 9.6 ] [ 9.6.p1 ] [ 9.6.p2 ] [ 9.6.p3 ] [ 9.6.p4 ] [ 10.0 ] [ 10.0.p1 ] [ 10.0.p2 ] [ 10.0.p3 ] [ 10.0.p4 ] [ 10.1 ] [ 10.1.p1 ] [ 10.1.p2 ] [ 10.1.p3 ] [ 10.2 ] [ 10.2.p1 ] [ 10.2.p2 ] [ 10.2.p3 ] [ 10.3 ] [ 10.3.p1 ] [ 10.3.p2 ] [ 10.3.p3 ] [ 10.4 ] [ 10.4.p1 ] [ 10.4.p2 ] [ 10.4.p3 ] [ 10.5 ] [ 10.5.p1 ] [ 10.6 ] [ 10.6.p1 ] [ 10.6.p2 ] [ 10.6.p3 ] [ 10.7 ] [ 10.7.p1 ] [ 10.7.p2 ] [ 10.7.p3 ] [ 10.7.p4 ] [ 11.0 ] [ 11.0.p1 ] [ 11.0.p2 ] [ 11.0.p3, ] [ 11.0.p4 ] [ 11.1 ] [ 11.1.1 ] [ 11.1.2 ] [ 11.1.3 ] [ 11.2 ] [ 11.2.1 ] [ 11.2.2 ] [ 11.3.0 ]

Diff markup

Differences between /track/include/G4VParticleChange.hh (Version 11.3.0) and /track/include/G4VParticleChange.hh (Version 11.0.p3,)


** Warning: Cannot open xref database.

  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 // G4VParticleChange                              
 27 //                                                
 28 // Class description:                             
 29 //                                                
 30 // Abstract class for "Particle Change".          
 31 //                                                
 32 // The ParticleChange class contains the resul    
 33 // of a physics process. This includes final s    
 34 // (momentum, energy, etc) and secondary parti    
 35 // interaction.                                   
 36 // The tracking assumes that all the values of    
 37 // in global reference system, therefore all t    
 38 // transformations must have been already comp    
 39 // data-members of this class.                    
 40 //                                                
 41 // This abstract class has following four virt    
 42 //     virtual G4Step* UpdateStepForAtRest(G4S    
 43 //     virtual G4Step* UpdateStepForAlongStep(    
 44 //     virtual G4Step* UpdateStepForPostStep(G    
 45 //     virtual void Initialize(const G4Track&)    
 46 // The UpdateStep methods return the pointer t    
 47 // the given Step information by using final s    
 48 // given by a physics process.                    
 49 // User must add methods to keep the final sta    
 50 // class as well as implement UpdateStep() met    
 51 //                                                
 52 // The Initialize() methods are provided to re    
 53 // information and should be called by each pr    
 54                                                   
 55 // Author: Hisaya Kurashige, 23 March 1998        
 56 // -------------------------------------------    
 57 #ifndef G4VParticleChange_hh                      
 58 #define G4VParticleChange_hh 1                    
 59                                                   
 60 #include <vector>                                 
 61 #include "globals.hh"                             
 62 #include "G4ios.hh"                               
 63 #include "G4TrackStatus.hh"                       
 64 #include "G4SteppingControl.hh"                   
 65 #include "G4Step.hh"                              
 66 #include "G4Track.hh"                             
 67                                                   
 68 class G4VParticleChange                           
 69 {                                                 
 70   public:                                         
 71                                                   
 72     G4VParticleChange();                          
 73                                                   
 74     virtual ~G4VParticleChange() = default;       
 75                                                   
 76     G4VParticleChange(const G4VParticleChange&    
 77     G4VParticleChange& operator=(const G4VPart    
 78                                                   
 79   // --- the following methods are for updatin    
 80                                                   
 81     virtual G4Step* UpdateStepForAtRest(G4Step    
 82     virtual G4Step* UpdateStepForAlongStep(G4S    
 83     virtual G4Step* UpdateStepForPostStep(G4St    
 84       // Return the pointer to the G4Step afte    
 85       // by using final state information of t    
 86       // process                                  
 87                                                   
 88     virtual void Initialize(const G4Track&);      
 89       // This methods will be called by each p    
 90       // of DoIt() if necessary                   
 91                                                   
 92   // --- the following methods are for TruePat    
 93                                                   
 94     inline G4double GetTrueStepLength() const;    
 95     inline void ProposeTrueStepLength(G4double    
 96       // Get/Propose theTrueStepLength            
 97                                                   
 98   // --- the following methods are for LocalEn    
 99                                                   
100     inline G4double GetLocalEnergyDeposit() co    
101     inline void ProposeLocalEnergyDeposit(G4do    
102       // Get/Propose the locally deposited ene    
103                                                   
104   // --- the following methods are for nonIoni    
105                                                   
106     inline G4double GetNonIonizingEnergyDeposi    
107     inline void ProposeNonIonizingEnergyDeposi    
108       // Get/Propose the non-ionizing deposite    
109                                                   
110   // --- the following methods are for TrackSt    
111                                                   
112     inline G4TrackStatus GetTrackStatus() cons    
113     inline void ProposeTrackStatus(G4TrackStat    
114       // Get/Propose the final TrackStatus of     
115                                                   
116     inline const G4Track* GetCurrentTrack() co    
117       // Get primary track pointer                
118                                                   
119   // --- the following methods are for managem    
120                                                   
121     inline G4SteppingControl GetSteppingContro    
122     inline void ProposeSteppingControl(G4Stepp    
123       // Set/Propose a flag to control steppin    
124                                                   
125   // --- the following methods are for managem    
126                                                   
127     inline G4bool GetFirstStepInVolume() const    
128     inline G4bool GetLastStepInVolume() const;    
129     inline void ProposeFirstStepInVolume(G4boo    
130     inline void ProposeLastStepInVolume(G4bool    
131                                                   
132   // --- the following methods are for managem    
133                                                   
134     inline void Clear();                          
135       // Clear the contents of this objects       
136       // This method should be called after th    
137       // manager removes all secondaries in th    
138                                                   
139     inline void SetNumberOfSecondaries(G4int t    
140       // SetNumberOfSecondaries must be called    
141       // in order to secure memory space for t    
142       // This method resets theNumberOfSeconda    
143       // (that will be incremented at every Ad    
144                                                   
145     inline G4int GetNumberOfSecondaries() cons    
146       // Returns the number of secondaries cur    
147                                                   
148     inline G4Track* GetSecondary(G4int anIndex    
149       // Returns the pointer to the generated     
150       // which is specified by an Index, no ch    
151                                                   
152     void AddSecondary(G4Track* aSecondary);       
153       // Adds a secondary particle to theListO    
154                                                   
155   // --- the following methods are for managem    
156                                                   
157     inline G4double GetWeight() const;            
158     inline G4double GetParentWeight() const;      
159       // Get weight of the parent (i.e. curren    
160                                                   
161     inline void ProposeWeight(G4double finalWe    
162     inline void ProposeParentWeight(G4double f    
163       // Propose new weight of the parent (i.e    
164       // As for AlongStepDoIt, the parent weig    
165       // in accumulated manner, i.e. - If two     
166       // weight of W1 and W2 respectively for     
167       // weight of W0 the final weight is set     
168                                                   
169     inline void SetSecondaryWeightByProcess(G4    
170     inline G4bool IsSecondaryWeightSetByProces    
171       // In default (fSecondaryWeightByProcess    
172       // the weight of secondary tracks will b    
173       // If fSecondaryWeightByProcess flag is     
174       // tracks will not be changed by the Par    
175       // determine the secondary weight)          
176       // NOTE:                                    
177       // Make sure that only one process in Al    
178       // parent weight; if several processes i    
179       // the parent weight and add secondaties    
180       // is set to false, secondary weights ma    
181                                                   
182     void SetParentWeightByProcess(G4bool);        
183     G4bool IsParentWeightSetByProcess() const;    
184       // Obsolete                                 
185                                                   
186   // --- Dump and debug methods ---               
187                                                   
188     virtual void DumpInfo() const;                
189       // Print out information                    
190                                                   
191     inline void SetVerboseLevel(G4int vLevel);    
192     inline G4int GetVerboseLevel() const;         
193                                                   
194     virtual G4bool CheckIt(const G4Track&);       
195       // CheckIt method for general control in    
196                                                   
197     inline void ClearDebugFlag();                 
198     inline void SetDebugFlag();                   
199     inline G4bool GetDebugFlag() const;           
200       // CheckIt method is activated if debug     
201       // and 'G4VERBOSE' is defined               
202                                                   
203   protected:                                      
204                                                   
205     G4Step* UpdateStepInfo(G4Step* Step);         
206       // Update the G4Step specific attributes    
207       // (i.e. SteppingControl, LocalEnergyDep    
208                                                   
209     inline void InitializeLocalEnergyDeposit()    
210     inline void InitializeSteppingControl();      
211     inline void InitializeParentWeight(const G    
212     inline void InitializeStatusChange(const G    
213     inline void InitializeSecondaries();          
214     inline void InitializeFromStep(const G4Ste    
215                                                   
216     inline G4double ComputeBeta(G4double kinEn    
217                                                   
218     G4bool CheckSecondary(G4Track&);              
219       // CheckSecondary method is provided to     
220       // in debug regime                          
221                                                   
222     G4double GetAccuracyForWarning() const;       
223     G4double GetAccuracyForException() const;     
224                                                   
225   protected:                                      
226                                                   
227     static const G4double accuracyForWarning;     
228     static const G4double accuracyForException    
229     static const G4int maxError;                  
230       // accuracy levels                          
231                                                   
232     const G4Track* theCurrentTrack = nullptr;     
233                                                   
234     G4TrackStatus theStatusChange = fAlive;       
235       // The changed (final) track status of a    
236                                                   
237     G4SteppingControl theSteppingControlFlag =    
238       // A flag to control stepping manager be    
239                                                   
240     G4double theLocalEnergyDeposit = 0.0;         
241       // It represents the part of the energy     
242       // or semi-continuous processes which is    
243       // not generated because they would have    
244       // threshold.                               
245       // The sum of the locally deposited ener    
246       // coming from the continuous processes     
247       // total energy loss localized in the cu    
248                                                   
249     G4double theNonIonizingEnergyDeposit = 0.0    
250       // Non-ionizing energu deposit is define    
251       // energy deposit, which does not cause     
252                                                   
253     G4double theTrueStepLength = 0.0;             
254       // The value of "True" Step Length          
255                                                   
256     G4double theParentWeight = 1.0;               
257       // Weight ofparent track                    
258                                                   
259     G4double theParentGlobalTime = 0.0;           
260       // Global time of the parent.               
261       // This is used only for checking           
262                                                   
263     G4int theNumberOfSecondaries = 0;             
264       // The total number of secondaries produ    
265                                                   
266     G4int theSizeOftheListOfSecondaries = 0;      
267       // TheSizeOftheListOfSecondaries;           
268                                                   
269     G4int verboseLevel = 1;                       
270       // The Verbose level                        
271                                                   
272     G4int nError = 0;                             
273                                                   
274     G4bool theFirstStepInVolume = false;          
275     G4bool theLastStepInVolume = false;           
276       // Flag for initial/last step               
277                                                   
278     G4bool isParentWeightProposed = false;        
279       // Flag for Weight of parent track          
280     G4bool fSetSecondaryWeightByProcess = fals    
281       // Flag for setting weight of secondarie    
282                                                   
283     G4bool debugFlag = false;                     
284                                                   
285     std::vector<G4Track*> theListOfSecondaries    
286       // The vector of secondaries                
287 };                                                
288                                                   
289 #include "G4VParticleChange.icc"                  
290                                                   
291 #endif                                            
292