Geant4 11.1.1
Toolkit for the simulation of the passage of particles through matter
All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Pages
G4INCLXXInterfaceStore.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// INCL++ intra-nuclear cascade model
27// Alain Boudard, CEA-Saclay, France
28// Joseph Cugnon, University of Liege, Belgium
29// Jean-Christophe David, CEA-Saclay, France
30// Pekka Kaitaniemi, CEA-Saclay, France, and Helsinki Institute of Physics, Finland
31// Sylvie Leray, CEA-Saclay, France
32// Davide Mancusi, CEA-Saclay, France
33//
34#define INCLXX_IN_GEANT4_MODE 1
35
36#include "globals.hh"
37
38/** \file G4INCLXXInterfaceStore.hh
39 * \brief Header file for the G4INCLXXInterfaceStore class
40 *
41 * \date 24 May 2012
42 * \author Davide Mancusi
43 */
44
45#ifndef G4INCLXXINTERFACESTORE_HH_
46#define G4INCLXXINTERFACESTORE_HH_
47
48#include "G4INCLXXInterface.hh"
49#include "G4INCLCascade.hh"
50#include "G4INCLVersion.hh"
51#include "G4INCLConfig.hh"
52#include <list>
53#include <sstream>
54
57
58/** \class G4INCLXXInterfaceStore
59 * \brief Singleton class for configuring the INCL++ Geant4 interface.
60 *
61 * This class also contains a single cached instance of the INCL model
62 * (\see{G4INCL::INCL}).
63 */
65 public:
66
67 /// \brief Get the singleton instance
69
70 /// \brief Delete the singleton instance
71 static void DeleteInstance();
72
73 /// \brief Get the cached INCL model engine
75
77
78 const std::string &getINCLXXVersionName();
79
80
81
82 /// \brief Setter for accurateProjectile
83 void SetAccurateProjectile(const G4bool b);
84
85 /// \brief Setter for the maximum cluster mass
86 void SetMaxClusterMass(const G4int aMass);
87
88 /// \brief Setter for cascadeMinEnergyPerNucleon
89 void SetCascadeMinEnergyPerNucleon(const G4double anEnergy);
90
91 /// \brief Setter for conservationTolerance
92 void SetConservationTolerance(const G4double aTolerance);
93
94
95
96
97 /** \brief Getter for accurateProjectile
98 *
99 * The \see{G4INCLXXInterfaceMessenger} class provides a UI command to set
100 * this parameter.
101 */
103
104 /** \brief Getter for cascadeMinEnergyPerNucleon
105 *
106 * The \see{G4INCLXXInterfaceMessenger} class provides a UI command to set
107 * this parameter.
108 */
110
111 /// \brief Getter for theConfig
113
114
115
116
117 /// \brief Getter for theMaxProjMassINCL
119
120
121
122
123 /// \brief Getter for conservationTolerance
125
126
127
128
129 /** \brief Emit a warning to G4cout
130 *
131 * The InterfaceStore will not emit more than maxWarnings warnings.
132 */
133 void EmitWarning(const G4String &message);
134
135 /** \brief Emit a BIG warning to G4cout
136 *
137 * There is no limit on the number of BIG warnings emitted.
138 */
139 void EmitBigWarning(const G4String &message) const;
140
141 /// \brief Getter for the interface tally
143
144 /// \brief Setter for the interface tally
145 void SetTally(G4INCLXXVInterfaceTally * const aTally);
146
147 /// \brief Set the INCL physics
148 void SetINCLPhysics(const G4String &option);
149
150 /// \brief Set ABLA V3 to be the de-excitation model to be used with INCL++
151 void UseAblaDeExcitation();
152
153 private:
154
155 /** \brief Private constructor
156 *
157 * This class is a singleton. It must be instantiated using the GetInstance
158 * static method.
159 */
161
162 /** \brief Private destructor
163 *
164 * This class is a singleton. Its instance must be deleted using the
165 * DeleteInstance static method.
166 */
168
169 /// \brief Delete the INCL model engine
170 void DeleteModel();
171
172 static G4ThreadLocal G4INCLXXInterfaceStore *theInstance;
173
174 G4INCL::Config theConfig;
175
176 G4bool accurateProjectile;
177 const G4int theMaxProjMassINCL;
178 G4double cascadeMinEnergyPerNucleon;
179 G4double conservationTolerance;
180
181 G4INCLXXInterfaceMessenger *theINCLXXInterfaceMessenger;
182
183 G4INCL::INCL *theINCLModel;
184
185 G4INCLXXVInterfaceTally *theTally;
186
187 /// \brief Static warning counter
188 G4int nWarnings;
189
190 /// \brief Maximum number of warnings
191 const G4int maxWarnings;
192
193 std::string versionName;
194};
195
196#endif // G4INCLXXINTERFACESTORE_HH_
double G4double
Definition: G4Types.hh:83
bool G4bool
Definition: G4Types.hh:86
int G4int
Definition: G4Types.hh:85
Singleton class for configuring the INCL++ Geant4 interface.
void EmitWarning(const G4String &message)
Emit a warning to G4cout.
static G4INCLXXInterfaceStore * GetInstance()
Get the singleton instance.
void SetAccurateProjectile(const G4bool b)
Setter for accurateProjectile.
void SetCascadeMinEnergyPerNucleon(const G4double anEnergy)
Setter for cascadeMinEnergyPerNucleon.
G4int GetMaxProjMassINCL() const
Getter for theMaxProjMassINCL.
G4INCL::INCL * GetINCLModel()
Get the cached INCL model engine.
void SetTally(G4INCLXXVInterfaceTally *const aTally)
Setter for the interface tally.
G4double GetConservationTolerance() const
Getter for conservationTolerance.
static void DeleteInstance()
Delete the singleton instance.
void EmitBigWarning(const G4String &message) const
Emit a BIG warning to G4cout.
G4INCL::Config & GetINCLConfig()
Getter for theConfig.
void SetConservationTolerance(const G4double aTolerance)
Setter for conservationTolerance.
G4double GetCascadeMinEnergyPerNucleon() const
Getter for cascadeMinEnergyPerNucleon.
G4INCLXXVInterfaceTally * GetTally() const
Getter for the interface tally.
void UseAblaDeExcitation()
Set ABLA V3 to be the de-excitation model to be used with INCL++.
const std::string & getINCLXXVersionName()
void SetMaxClusterMass(const G4int aMass)
Setter for the maximum cluster mass.
G4bool GetAccurateProjectile() const
Getter for accurateProjectile.
void SetINCLPhysics(const G4String &option)
Set the INCL physics.
#define G4ThreadLocal
Definition: tls.hh:77