Geant4 Cross Reference

Cross-Referencing   Geant4
Geant4/event/include/G4StackManager.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 /event/include/G4StackManager.hh (Version 11.3.0) and /event/include/G4StackManager.hh (Version ReleaseNotes)


** 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 // G4StackManager                                 
 27 //                                                
 28 // Class description:                             
 29 //                                                
 30 // This is the manager class of handling stack    
 31 // This class must be a singleton and be const    
 32 // Almost all methods must be invoked exclusiv    
 33 // Especially, some Clear() methods MUST NOT b    
 34 // Event abortion is handled by G4EventManager    
 35 //                                                
 36 // G4StackManager has three stacks, the urgent    
 37 // waiting stack, and the postpone to next eve    
 38 // of each stack is descrived in the Geant4 Us    
 39                                                   
 40 // Author: Makoto Asai, 1996                      
 41 //                                                
 42 // History:                                       
 43 // - 01/Feb/1996, Makoto Asai - Created           
 44 // - 04/Oct/2011, Pere Mato - Use of G4TrackSt    
 45 // - 28/Aug/2023, Makoto Asai - Adding sub-eve    
 46 // -------------------------------------------    
 47 #ifndef G4StackManager_hh                         
 48 #define G4StackManager_hh 1                       
 49                                                   
 50 #include <map>                                    
 51 #include <vector>                                 
 52                                                   
 53 #include "G4UserStackingAction.hh"                
 54 #include "G4StackedTrack.hh"                      
 55 #include "G4TrackStack.hh"                        
 56 #include "G4SmartTrackStack.hh"                   
 57 #include "G4SubEventTrackStack.hh"                
 58 #include "G4ClassificationOfNewTrack.hh"          
 59 #include "G4Track.hh"                             
 60 #include "G4TrackStatus.hh"                       
 61 #include "G4ExceptionSeverity.hh"                 
 62 #include "globals.hh"                             
 63                                                   
 64 class G4StackingMessenger;                        
 65 class G4VTrajectory;                              
 66 class G4Event;                                    
 67 class G4ParticleDefinition;                       
 68                                                   
 69 class G4StackManager                              
 70 {                                                 
 71   public:                                         
 72                                                   
 73     G4StackManager();                             
 74    ~G4StackManager();                             
 75                                                   
 76     const G4StackManager& operator=(const G4St    
 77     G4bool operator==(const G4StackManager&) c    
 78     G4bool operator!=(const G4StackManager&) c    
 79                                                   
 80     G4int PushOneTrack(G4Track* newTrack,         
 81                        G4VTrajectory* newTraje    
 82     G4Track* PopNextTrack(G4VTrajectory** newT    
 83     G4int PrepareNewEvent(G4Event* currentEven    
 84                                                   
 85     void ReClassify();                            
 86       // Send all tracks stored in the Urgent     
 87       // the user's concrete ClassifyNewTrack(    
 88       // can be invoked from the user's G4User    
 89       // class, especially fron its NewStage()    
 90       // when the urgent stack becomes empty,     
 91       // stack are send to the urgent stack an    
 92       // method is invoked.                       
 93                                                   
 94     void SetNumberOfAdditionalWaitingStacks(G4    
 95       // Set the number of additional (optiona    
 96       // This method must be invoked at PreIni    
 97       // Once the user set the number of addit    
 98       // he/she can use the corresponding ENUM    
 99       // The user should invoke G4RunManager::    
100       // method, which invokes this method.       
101                                                   
102     void TransferStackedTracks(G4Classificatio    
103                                G4Classificatio    
104       // Transfer all stacked tracks from the     
105       // destination stack. The destination st    
106       // If the destination is fKill, tracks a    
107       // If the origin is fKill, nothing happe    
108                                                   
109     void TransferOneStackedTrack(G4Classificat    
110                                  G4Classificat    
111       // Transfter one stacked track from the     
112       // stack.                                   
113       // The transfered track is the one which    
114       // The destination stack needs not be em    
115       // If the destination is fKill, the trac    
116       // If the origin is fKill, nothing happe    
117                                                   
118     void RegisterSubEventType(G4int ty, G4int     
119       // Registering a sub-event type and the     
120       // stored in a G4SubEvent object of the     
121                                                   
122     void SetDefaultClassification(                
123              G4TrackStatus, G4ClassificationOf    
124              G4ExceptionSeverity es = G4Except    
125     void SetDefaultClassification(                
126              const G4ParticleDefinition*, G4Cl    
127              G4ExceptionSeverity es = G4Except    
128       // Define the default classification for    
129       // Default can be alternated by the User    
130       // G4ExceptionSeverity can be set to war    
131       // is inproperly changed.                   
132                                                   
133     inline G4ClassificationOfNewTrack GetDefau    
134     { return fDefaultClassification; }            
135                                                   
136   public:                                         
137     void ReleaseSubEvent(G4int ty);               
138     inline std::size_t GetNSubEventTypes()        
139     { return subEvtTypes.size(); }                
140     inline G4int GetSubEventType(std::size_t i    
141     { return subEvtTypes[i]; }                    
142                                                   
143     void clear();                                 
144     void ClearUrgentStack();                      
145     void ClearWaitingStack(G4int i=0);            
146     void ClearPostponeStack();                    
147     G4int GetNTotalTrack() const;                 
148     G4int GetNUrgentTrack() const;                
149     G4int GetNWaitingTrack(G4int i=0) const;      
150     G4int GetNPostponedTrack() const;             
151     void SetVerboseLevel( G4int const value );    
152     void SetUserStackingAction(G4UserStackingA    
153                                                   
154   private:                                        
155     void DefineDefaultClassification(const G4T    
156     void SortOut(G4StackedTrack&,G4Classificat    
157                                                   
158   private:                                        
159                                                   
160     G4UserStackingAction* userStackingAction =    
161     G4int verboseLevel = 0;                       
162 #ifdef G4_USESMARTSTACK                           
163     G4SmartTrackStack* urgentStack = nullptr;     
164 #else                                             
165     G4TrackStack* urgentStack = nullptr;          
166 #endif                                            
167     G4TrackStack* waitingStack = nullptr;         
168     G4TrackStack* postponeStack = nullptr;        
169     G4StackingMessenger* theMessenger = nullpt    
170     std::vector<G4TrackStack*> additionalWaiti    
171     G4int numberOfAdditionalWaitingStacks = 0;    
172                                                   
173     std::map<G4TrackStatus,                       
174              std::pair<G4ClassificationOfNewTr    
175              defClassTrackStatus;                 
176     std::map<const G4ParticleDefinition*,         
177              std::pair<G4ClassificationOfNewTr    
178              defClassPartDef;                     
179     G4ClassificationOfNewTrack fDefaultClassif    
180     G4ExceptionSeverity fExceptionSeverity = G    
181                                                   
182     std::map<G4int,G4SubEventTrackStack*> subE    
183     std::vector<G4int> subEvtTypes;               
184 };                                                
185                                                   
186 #endif                                            
187