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 11.1.3)


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