Geant4 9.6.0
Toolkit for the simulation of the passage of particles through matter
All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros
G4PreCompoundModel.hh
Go to the documentation of this file.
1//
2// ********************************************************************
3// * License and Disclaimer *
4// * *
5// * The Geant4 software is copyright of the Copyright Holders of *
6// * the Geant4 Collaboration. It is provided under the terms and *
7// * conditions of the Geant4 Software License, included in the file *
8// * LICENSE and available at http://cern.ch/geant4/license . These *
9// * include a list of copyright holders. *
10// * *
11// * Neither the authors of this software system, nor their employing *
12// * institutes,nor the agencies providing financial support for this *
13// * work make any representation or warranty, express or implied, *
14// * regarding this software system or assume any liability for its *
15// * use. Please see the license in the file LICENSE and URL above *
16// * for the full disclaimer and the limitation of liability. *
17// * *
18// * This code implementation is the result of the scientific and *
19// * technical work of the GEANT4 collaboration. *
20// * By using, copying, modifying or distributing the software (or *
21// * any work based on the software) you agree to acknowledge its *
22// * use in resulting scientific publications, and indicate your *
23// * acceptance of all terms of the Geant4 Software license. *
24// ********************************************************************
25//
26// $Id$
27//
28// by V. Lara
29//
30// Class Description
31// Model implementation for pre-equilibrium decay models in geant4.
32// To be used in your physics list, in case you neeed this kind of physics.
33// Can be used as a stand-allone model, but also in conjunction with an intra-nuclear
34// transport, or any of the string-parton models.
35// Class Description - End
36//
37// Modified:
38// 03.09.2008 J.M.Quesada added external choice of inverse
39// cross section option.(default OPTxs=3)
40// 06.09.2008 J.M.Quesada external choices have been added for:
41// - superimposed Coulomb barrier (if useSICB=true, default false)
42// - "never go back" hipothesis (if useNGB=true, default false)
43// - soft cutoff from preeq. to equlibrium (if useSCO=true, default false)
44// - CEM transition probabilities (if useCEMtr=true)
45// 30.10.2009 J.M.Quesada CEM transition probabilities are set as default
46// 20.08.2010 V.Ivanchenko Cleanup of the code - changed data members and inline methods
47// 03.01.2012 V.Ivanchenko Added pointer to G4ExcitationHandler to the
48// constructor
49
50#ifndef G4PreCompoundModel_h
51#define G4PreCompoundModel_h 1
52
54#include "G4Fragment.hh"
56#include "G4ReactionProduct.hh"
58
63
65{
66public:
67
69
70 virtual ~G4PreCompoundModel();
71
72 virtual G4HadFinalState * ApplyYourself(const G4HadProjectile & thePrimary,
73 G4Nucleus & theNucleus);
74
75 virtual G4ReactionProductVector* DeExcite(G4Fragment& aFragment);
76
77 virtual void ModelDescription(std::ostream& outFile) const;
78
79 void UseHETCEmission();
80 void UseDefaultEmission();
81 void UseGNASHTransition();
83
84 //for cross section selection
85 void SetOPTxs(G4int opt);
86
87 //for the rest of external choices
88 void UseSICB();
89 void UseNGB();
90 void UseSCO();
91 void UseCEMtr();
92
93private:
94
95 inline
96 void PerformEquilibriumEmission(const G4Fragment & aFragment,
97 G4ReactionProductVector * theResult) const;
98
99 // G4PreCompoundModel();
101 const G4PreCompoundModel& operator=(const G4PreCompoundModel &right);
102 G4bool operator==(const G4PreCompoundModel &right) const;
103 G4bool operator!=(const G4PreCompoundModel &right) const;
104
105 //==============
106 // Data Members
107 //==============
108
109 G4PreCompoundParameters* theParameters;
110 G4PreCompoundEmission* theEmission;
111 G4VPreCompoundTransitions* theTransition;
112
113 const G4ParticleDefinition* proton;
114 const G4ParticleDefinition* neutron;
115
116 G4bool useHETCEmission;
117 G4bool useGNASHTransition;
118
119 //for cross section options
120 G4int OPTxs;
121
122 //for the rest of external choices
123 G4bool useSICB;
124 G4bool useNGB;
125 G4bool useSCO;
126 G4bool useCEMtr;
127
128 G4int maxZ;
129 G4int maxA;
130
131 G4HadFinalState theResult;
132
133};
134
135inline void
136G4PreCompoundModel::PerformEquilibriumEmission(const G4Fragment & aFragment,
137 G4ReactionProductVector * Result) const
138{
139 G4ReactionProductVector* theEquilibriumResult =
140 GetExcitationHandler()->BreakItUp(aFragment);
141 Result->insert(Result->end(),theEquilibriumResult->begin(), theEquilibriumResult->end());
142 delete theEquilibriumResult;
143}
144
145#endif
146
std::vector< G4ReactionProduct * > G4ReactionProductVector
int G4int
Definition: G4Types.hh:66
bool G4bool
Definition: G4Types.hh:67
G4ReactionProductVector * BreakItUp(const G4Fragment &theInitialState) const
void SetOPTxs(G4int opt)
virtual void ModelDescription(std::ostream &outFile) const
virtual G4ReactionProductVector * DeExcite(G4Fragment &aFragment)
virtual G4HadFinalState * ApplyYourself(const G4HadProjectile &thePrimary, G4Nucleus &theNucleus)
G4ExcitationHandler * GetExcitationHandler() const