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


  1 //                                                  1 //
  2 // *******************************************      2 // ********************************************************************
  3 // * License and Disclaimer                    <<   3 // * DISCLAIMER                                                       *
  4 // *                                                4 // *                                                                  *
  5 // * The  Geant4 software  is  copyright of th <<   5 // * The following disclaimer summarizes all the specific disclaimers *
  6 // * the Geant4 Collaboration.  It is provided <<   6 // * of contributors to this software. The specific disclaimers,which *
  7 // * conditions of the Geant4 Software License <<   7 // * govern, are listed with their locations in:                      *
  8 // * LICENSE and available at  http://cern.ch/ <<   8 // *   http://cern.ch/geant4/license                                  *
  9 // * include a list of copyright holders.      << 
 10 // *                                                9 // *                                                                  *
 11 // * Neither the authors of this software syst     10 // * Neither the authors of this software system, nor their employing *
 12 // * institutes,nor the agencies providing fin     11 // * institutes,nor the agencies providing financial support for this *
 13 // * work  make  any representation or  warran     12 // * work  make  any representation or  warranty, express or implied, *
 14 // * regarding  this  software system or assum     13 // * regarding  this  software system or assume any liability for its *
 15 // * use.  Please see the license in the file  <<  14 // * use.                                                             *
 16 // * for the full disclaimer and the limitatio << 
 17 // *                                               15 // *                                                                  *
 18 // * This  code  implementation is the result  <<  16 // * This  code  implementation is the  intellectual property  of the *
 19 // * technical work of the GEANT4 collaboratio <<  17 // * GEANT4 collaboration.                                            *
 20 // * By using,  copying,  modifying or  distri <<  18 // * By copying,  distributing  or modifying the Program (or any work *
 21 // * any work based  on the software)  you  ag <<  19 // * based  on  the Program)  you indicate  your  acceptance of  this *
 22 // * use  in  resulting  scientific  publicati <<  20 // * statement, and all its terms.                                    *
 23 // * acceptance of all terms of the Geant4 Sof << 
 24 // *******************************************     21 // ********************************************************************
 25 //                                                 22 //
                                                   >>  23 //
                                                   >>  24 // $Id: G4ExcitationHandler.hh,v 1.4 2003/10/07 12:54:01 lara Exp $
                                                   >>  25 // GEANT4 tag $Name: geant4-06-00-patch-01 $
                                                   >>  26 //
 26 // Hadronic Process: Nuclear De-excitations        27 // Hadronic Process: Nuclear De-excitations
 27 // by V. Lara (May 1998)                           28 // by V. Lara (May 1998)
 28 //                                             <<  29 // Modif (30 June 1998) by V. Lara:
 29 // Modifications:                              << 
 30 // 30 June 1998 by V. Lara:                    << 
 31 //      -Using G4ParticleTable and therefore G     30 //      -Using G4ParticleTable and therefore G4IonTable
 32 //       it can return all kind of fragments p     31 //       it can return all kind of fragments produced in 
 33 //       deexcitation                              32 //       deexcitation
 34 //      -It uses default algorithms for:           33 //      -It uses default algorithms for:
 35 //              Evaporation: G4StatEvaporation     34 //              Evaporation: G4StatEvaporation
 36 //              MultiFragmentation: G4DummyMF      35 //              MultiFragmentation: G4DummyMF (a dummy one)
 37 //              Fermi Breakup model: G4StatFer     36 //              Fermi Breakup model: G4StatFermiBreakUp
 38 //                                             <<  37 
 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                                                    38 
 47 #ifndef G4ExcitationHandler_h                      39 #ifndef G4ExcitationHandler_h
 48 #define G4ExcitationHandler_h 1                    40 #define G4ExcitationHandler_h 1
 49                                                    41 
 50 #include "globals.hh"                          <<  42 #include "G4VMultiFragmentation.hh"
                                                   >>  43 #include "G4VFermiBreakUp.hh"
                                                   >>  44 #include "G4VEvaporation.hh"
                                                   >>  45 #include "G4VPhotonEvaporation.hh"
 51 #include "G4Fragment.hh"                           46 #include "G4Fragment.hh"
                                                   >>  47 #include "G4DynamicParticle.hh"
 52 #include "G4ReactionProductVector.hh"              48 #include "G4ReactionProductVector.hh"
 53 #include "G4IonTable.hh"                       <<  49 #include "G4ReactionProduct.hh"
 54 #include "G4DeexPrecoParameters.hh"            <<  50 #include "G4ParticleTypes.hh"
 55 #include "G4NistManager.hh"                    <<  51 #include "G4ParticleTable.hh"
 56                                                <<  52 // needed for default models
 57 class G4VMultiFragmentation;                   <<  53 #include "G4Evaporation.hh"
 58 class G4VFermiBreakUp;                         <<  54 #include "G4StatMF.hh"
 59 class G4VEvaporation;                          <<  55 #include "G4FermiBreakUp.hh"
 60 class G4VEvaporationChannel;                   <<  56 #include "G4PhotonEvaporation.hh"
 61 class G4ParticleTable;                         <<  57 #include "G4IonConstructor.hh" 
                                                   >>  58 
                                                   >>  59 //#define debug
 62                                                    60 
 63 class G4ExcitationHandler                          61 class G4ExcitationHandler 
 64 {                                                  62 {
 65 public:                                            63 public:
 66                                                << 
 67   G4ExcitationHandler();                           64   G4ExcitationHandler(); 
 68   ~G4ExcitationHandler();                          65   ~G4ExcitationHandler();
                                                   >>  66 private:
                                                   >>  67   G4ExcitationHandler(const G4ExcitationHandler &right);
 69                                                    68 
 70   G4ReactionProductVector* BreakItUp(const G4F <<  69   const G4ExcitationHandler & operator=(const G4ExcitationHandler &right);
                                                   >>  70   G4bool operator==(const G4ExcitationHandler &right) const;
                                                   >>  71   G4bool operator!=(const G4ExcitationHandler &right) const;
                                                   >>  72   
                                                   >>  73 
                                                   >>  74 public:
                                                   >>  75   G4ReactionProductVector * BreakItUp(const G4Fragment &theInitialState) const;
                                                   >>  76 
                                                   >>  77   void SetEvaporation(G4VEvaporation *const  value);
 71                                                    78 
 72   // short model description used for automati <<  79   void SetMultiFragmentation(G4VMultiFragmentation *const  value);
 73   void ModelDescription(std::ostream& outFile) << 
 74                                                    80 
 75   void Initialise();                           <<  81   void SetFermiModel(G4VFermiBreakUp *const  value);
 76                                                    82 
 77   // user defined sub-models                   <<  83   void SetPhotonEvaporation(G4VPhotonEvaporation * const value);
 78   // deletion is responsibility of this handle <<  84 
 79   void SetEvaporation(G4VEvaporation* ptr, G4b <<  85   void SetMaxZForFermiBreakUp(G4int aZ);
 80   void SetMultiFragmentation(G4VMultiFragmenta <<  86   void SetMaxAForFermiBreakUp(G4int anA);
 81   void SetFermiModel(G4VFermiBreakUp* ptr);    <<  87   void SetMaxAandZForFermiBreakUp(G4int anA,G4int aZ);
 82   void SetPhotonEvaporation(G4VEvaporationChan <<  88   void SetMinEForMultiFrag(G4double anE);
 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                                                    89 
112 private:                                           90 private:
113                                                    91 
114   void SetParameters();                        <<  92   G4ReactionProductVector * Transform(G4FragmentVector * theFragmentVector) const;
115                                                    93 
116   inline void SortSecondaryFragment(G4Fragment <<  94   const G4VEvaporation * GetEvaporation() const;
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                                                    95 
135   G4int icID{0};                               <<  96   const G4VMultiFragmentation * GetMultiFragmentation() const;
136                                                    97 
137   G4int maxZForFermiBreakUp{9};                <<  98   const G4VFermiBreakUp * GetFermiModel() const;
138   G4int maxAForFermiBreakUp{17};               << 
139                                                    99 
140   G4int  fVerbose{1};                          << 100   const G4VPhotonEvaporation * GetPhotonEvaporation() const;
141   G4int  fWarnings{0};                         << 
142                                                   101 
                                                   >> 102   const G4int GetMaxZ() const;
                                                   >> 103   const G4int GetMaxA() const;
                                                   >> 104   const G4double GetMinE() const;
                                                   >> 105 
                                                   >> 106   
                                                   >> 107 #ifdef debug
                                                   >> 108   void CheckConservation(const G4Fragment & aFragment,
                                                   >> 109        G4FragmentVector * Result) const;
                                                   >> 110 #endif
                                                   >> 111 private:
                                                   >> 112   
                                                   >> 113   G4VEvaporation *theEvaporation;
                                                   >> 114   
                                                   >> 115   G4VMultiFragmentation *theMultiFragmentation;
                                                   >> 116   
                                                   >> 117   G4VFermiBreakUp *theFermiModel;
                                                   >> 118  
                                                   >> 119   G4VPhotonEvaporation * thePhotonEvaporation;
                                                   >> 120 
                                                   >> 121   G4int maxZForFermiBreakUp;
                                                   >> 122   G4int maxAForFermiBreakUp;
143   G4double minEForMultiFrag;                      123   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                                                   124 
152   // list of fragments to store final result   << 125   G4ParticleTable *theTableOfParticles;
153   std::vector<G4Fragment*> theResults;         << 126 
                                                   >> 127   G4bool MyOwnEvaporationClass;
                                                   >> 128   G4bool MyOwnMultiFragmentationClass;  
                                                   >> 129   G4bool MyOwnFermiBreakUpClass;
                                                   >> 130   G4bool MyOwnPhotonEvaporationClass;
                                                   >> 131 
                                                   >> 132   struct DeleteFragment 
                                                   >> 133   {
                                                   >> 134     template<typename T>
                                                   >> 135     void operator()(const T* ptr) const
                                                   >> 136     {
                                                   >> 137       delete ptr;
                                                   >> 138     }
                                                   >> 139   };
154                                                   140 
155   // list of fragments to store intermediate r << 
156   std::vector<G4Fragment*> results;            << 
157                                                   141 
158   // list of fragments to apply Evaporation or << 
159   std::vector<G4Fragment*> theEvapList;        << 
160 };                                                142 };
161                                                   143 
                                                   >> 144 
                                                   >> 145 
                                                   >> 146 inline const G4VEvaporation * G4ExcitationHandler::GetEvaporation() const
                                                   >> 147 {
                                                   >> 148   return theEvaporation;
                                                   >> 149 }
                                                   >> 150 
                                                   >> 151 inline void G4ExcitationHandler::SetEvaporation(G4VEvaporation *const  value)
                                                   >> 152 {
                                                   >> 153   if (theEvaporation != 0 && MyOwnEvaporationClass) delete theEvaporation;
                                                   >> 154   MyOwnEvaporationClass = false;
                                                   >> 155   theEvaporation = value;
                                                   >> 156 }
                                                   >> 157 
                                                   >> 158 inline const G4VMultiFragmentation * G4ExcitationHandler::GetMultiFragmentation() const
                                                   >> 159 {
                                                   >> 160   return theMultiFragmentation;
                                                   >> 161 }
                                                   >> 162 
                                                   >> 163 inline void G4ExcitationHandler::SetMultiFragmentation(G4VMultiFragmentation *const  value)
                                                   >> 164 {
                                                   >> 165   if (theMultiFragmentation != 0 && MyOwnMultiFragmentationClass) delete theMultiFragmentation;
                                                   >> 166   MyOwnMultiFragmentationClass = false;
                                                   >> 167   theMultiFragmentation = value;
                                                   >> 168 }
                                                   >> 169 
                                                   >> 170 inline const G4VFermiBreakUp * G4ExcitationHandler::GetFermiModel() const
                                                   >> 171 {
                                                   >> 172   return theFermiModel;
                                                   >> 173 }
                                                   >> 174 
                                                   >> 175 inline void G4ExcitationHandler::SetFermiModel(G4VFermiBreakUp *const  value)
                                                   >> 176 {
                                                   >> 177   if (theFermiModel != 0 && MyOwnFermiBreakUpClass) delete theFermiModel;
                                                   >> 178   MyOwnFermiBreakUpClass = false;
                                                   >> 179   theFermiModel = value;
                                                   >> 180 }
                                                   >> 181 
                                                   >> 182 
                                                   >> 183 inline const G4VPhotonEvaporation * G4ExcitationHandler::GetPhotonEvaporation() const
                                                   >> 184 {
                                                   >> 185   return thePhotonEvaporation;
                                                   >> 186 }
                                                   >> 187 
                                                   >> 188 inline void G4ExcitationHandler::SetPhotonEvaporation(G4VPhotonEvaporation *const  value)
                                                   >> 189 {
                                                   >> 190   if (thePhotonEvaporation != 0 && MyOwnPhotonEvaporationClass) delete thePhotonEvaporation;
                                                   >> 191   MyOwnPhotonEvaporationClass = false;
                                                   >> 192   thePhotonEvaporation = value;
                                                   >> 193 }
                                                   >> 194 
162 inline void G4ExcitationHandler::SetMaxZForFer    195 inline void G4ExcitationHandler::SetMaxZForFermiBreakUp(G4int aZ)
163 {                                                 196 {
164   maxZForFermiBreakUp = aZ;                       197   maxZForFermiBreakUp = aZ;
165 }                                                 198 }
166                                                   199 
167 inline void G4ExcitationHandler::SetMaxAForFer    200 inline void G4ExcitationHandler::SetMaxAForFermiBreakUp(G4int anA)
168 {                                                 201 {
169   maxAForFermiBreakUp = anA;                      202   maxAForFermiBreakUp = anA;
170 }                                                 203 }
171                                                   204 
172 inline void G4ExcitationHandler::SetMaxAandZFo    205 inline void G4ExcitationHandler::SetMaxAandZForFermiBreakUp(G4int anA, G4int aZ)
173 {                                                 206 {
174   SetMaxAForFermiBreakUp(anA);                 << 207   maxAForFermiBreakUp = anA;
175   SetMaxZForFermiBreakUp(aZ);                  << 208   maxZForFermiBreakUp = aZ;
176 }                                                 209 }
177                                                   210 
178 inline void G4ExcitationHandler::SetMinEForMul    211 inline void G4ExcitationHandler::SetMinEForMultiFrag(G4double anE)
179 {                                                 212 {
180   minEForMultiFrag = anE;                         213   minEForMultiFrag = anE;
181 }                                                 214 }
182                                                   215 
183 inline void G4ExcitationHandler::SortSecondary << 216 inline const G4int G4ExcitationHandler::GetMaxZ() const
184 {                                              << 217 {
185   G4int A = frag->GetA_asInt();                << 218   return maxZForFermiBreakUp;
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 }                                                 219 }
                                                   >> 220 
                                                   >> 221 inline const G4int G4ExcitationHandler::GetMaxA() const 
                                                   >> 222 {
                                                   >> 223   return maxAForFermiBreakUp;
                                                   >> 224 }
                                                   >> 225 
                                                   >> 226 inline const G4double G4ExcitationHandler::GetMinE() const 
                                                   >> 227 {
                                                   >> 228   return minEForMultiFrag;
                                                   >> 229 }
                                                   >> 230 
205                                                   231 
206 #endif                                            232 #endif
207                                                   233