Geant4 Cross Reference

Cross-Referencing   Geant4
Geant4/processes/hadronic/models/de_excitation/handler/include/G4ExcitationHandler.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 /processes/hadronic/models/de_excitation/handler/include/G4ExcitationHandler.hh (Version 11.3.0) and /processes/hadronic/models/de_excitation/handler/include/G4ExcitationHandler.hh (Version 3.2)


  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 // Hadronic Process: Nuclear De-excitations       
 27 // by V. Lara (May 1998)                          
 28 //                                                
 29 // Modifications:                                 
 30 // 30 June 1998 by V. Lara:                       
 31 //      -Using G4ParticleTable and therefore G    
 32 //       it can return all kind of fragments p    
 33 //       deexcitation                             
 34 //      -It uses default algorithms for:          
 35 //              Evaporation: G4StatEvaporation    
 36 //              MultiFragmentation: G4DummyMF     
 37 //              Fermi Breakup model: G4StatFer    
 38 //                                                
 39 // 03 September 2008 by J. M. Quesada for exte    
 40 //    cross section option                        
 41 // 06 September 2008 JMQ Also external choices    
 42 //    superimposed Coulomb barrier (if useSICB    
 43 // 23 January 2012 by V.Ivanchenko remove obso    
 44 //    methods to deexcitation components          
 45 //                                                
 46                                                   
 47 #ifndef G4ExcitationHandler_h                     
 48 #define G4ExcitationHandler_h 1                   
 49                                                   
 50 #include "globals.hh"                             
 51 #include "G4Fragment.hh"                          
 52 #include "G4ReactionProductVector.hh"             
 53 #include "G4IonTable.hh"                          
 54 #include "G4DeexPrecoParameters.hh"               
 55 #include "G4NistManager.hh"                       
 56                                                   
 57 class G4VMultiFragmentation;                      
 58 class G4VFermiBreakUp;                            
 59 class G4VEvaporation;                             
 60 class G4VEvaporationChannel;                      
 61 class G4ParticleTable;                            
 62                                                   
 63 class G4ExcitationHandler                         
 64 {                                                 
 65 public:                                           
 66                                                   
 67   G4ExcitationHandler();                          
 68   ~G4ExcitationHandler();                         
 69                                                   
 70   G4ReactionProductVector* BreakItUp(const G4F    
 71                                                   
 72   // short model description used for automati    
 73   void ModelDescription(std::ostream& outFile)    
 74                                                   
 75   void Initialise();                              
 76                                                   
 77   // user defined sub-models                      
 78   // deletion is responsibility of this handle    
 79   void SetEvaporation(G4VEvaporation* ptr, G4b    
 80   void SetMultiFragmentation(G4VMultiFragmenta    
 81   void SetFermiModel(G4VFermiBreakUp* ptr);       
 82   void SetPhotonEvaporation(G4VEvaporationChan    
 83   void SetDeexChannelsType(G4DeexChannelType v    
 84                                                   
 85   //======== Obsolete methods to be removed ==    
 86                                                   
 87   // parameters of sub-models                     
 88   inline void SetMaxZForFermiBreakUp(G4int aZ)    
 89   inline void SetMaxAForFermiBreakUp(G4int anA    
 90   inline void SetMaxAandZForFermiBreakUp(G4int    
 91   inline void SetMinEForMultiFrag(G4double anE    
 92                                                   
 93   // access methods                               
 94   G4VEvaporation* GetEvaporation();               
 95   G4VMultiFragmentation* GetMultiFragmentation    
 96   G4VFermiBreakUp* GetFermiModel();               
 97   G4VEvaporationChannel* GetPhotonEvaporation(    
 98                                                   
 99   // for inverse cross section choice             
100   inline void SetOPTxs(G4int opt);                
101   // for superimposed Coulomb Barrier for inve    
102   inline void UseSICB();                          
103                                                   
104   //==========================================    
105                                                   
106   G4ExcitationHandler(const G4ExcitationHandle    
107   const G4ExcitationHandler & operator            
108   =(const G4ExcitationHandler &right) = delete    
109   G4bool operator==(const G4ExcitationHandler     
110   G4bool operator!=(const G4ExcitationHandler     
111                                                   
112 private:                                          
113                                                   
114   void SetParameters();                           
115                                                   
116   inline void SortSecondaryFragment(G4Fragment    
117                                                   
118   G4VEvaporation* theEvaporation{nullptr};        
119   G4VMultiFragmentation* theMultiFragmentation    
120   G4VFermiBreakUp* theFermiModel;                 
121   G4VEvaporationChannel* thePhotonEvaporation;    
122   G4ParticleTable* thePartTable;                  
123   G4IonTable* theTableOfIons;                     
124   G4NistManager* nist;                            
125                                                   
126   const G4ParticleDefinition* theElectron;        
127   const G4ParticleDefinition* theNeutron;         
128   const G4ParticleDefinition* theProton;          
129   const G4ParticleDefinition* theDeuteron;        
130   const G4ParticleDefinition* theTriton;          
131   const G4ParticleDefinition* theHe3;             
132   const G4ParticleDefinition* theAlpha;           
133   const G4ParticleDefinition* theLambda;          
134                                                   
135   G4int icID{0};                                  
136                                                   
137   G4int maxZForFermiBreakUp{9};                   
138   G4int maxAForFermiBreakUp{17};                  
139                                                   
140   G4int  fVerbose{1};                             
141   G4int  fWarnings{0};                            
142                                                   
143   G4double minEForMultiFrag;                      
144   G4double minExcitation;                         
145   G4double maxExcitation;                         
146   G4double fLambdaMass;                           
147                                                   
148   G4bool isInitialised{false};                    
149   G4bool isEvapLocal{true};                       
150   G4bool isActive{true};                          
151                                                   
152   // list of fragments to store final result      
153   std::vector<G4Fragment*> theResults;            
154                                                   
155   // list of fragments to store intermediate r    
156   std::vector<G4Fragment*> results;               
157                                                   
158   // list of fragments to apply Evaporation or    
159   std::vector<G4Fragment*> theEvapList;           
160 };                                                
161                                                   
162 inline void G4ExcitationHandler::SetMaxZForFer    
163 {                                                 
164   maxZForFermiBreakUp = aZ;                       
165 }                                                 
166                                                   
167 inline void G4ExcitationHandler::SetMaxAForFer    
168 {                                                 
169   maxAForFermiBreakUp = anA;                      
170 }                                                 
171                                                   
172 inline void G4ExcitationHandler::SetMaxAandZFo    
173 {                                                 
174   SetMaxAForFermiBreakUp(anA);                    
175   SetMaxZForFermiBreakUp(aZ);                     
176 }                                                 
177                                                   
178 inline void G4ExcitationHandler::SetMinEForMul    
179 {                                                 
180   minEForMultiFrag = anE;                         
181 }                                                 
182                                                   
183 inline void G4ExcitationHandler::SortSecondary    
184 {                                                 
185   G4int A = frag->GetA_asInt();                   
186                                                   
187   // gamma, e-, p, n                              
188   if(A <= 1 || frag->IsLongLived()) {             
189     theResults.push_back(frag);                   
190   } else if(frag->GetExcitationEnergy() < minE    
191     // cold fragments                             
192     G4int Z = frag->GetZ_asInt();                 
193                                                   
194     // is stable or d, t, He3, He4                
195     if(nist->GetIsotopeAbundance(Z, A) > 0.0 |    
196       theResults.push_back(frag); // stable fr    
197     } else {                                      
198       theEvapList.push_back(frag);                
199     }                                             
200     // hot fragments are unstable                 
201   } else {                                        
202     theEvapList.push_back(frag);                  
203   }                                               
204 }                                                 
205                                                   
206 #endif                                            
207