Geant4 11.1.1
Toolkit for the simulation of the passage of particles through matter
Loading...
Searching...
No Matches
G4CascadeParameters.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// Encapsulate all user-configurable parameters with associated envvars
27//
28// 20120912 M. Kelsey -- Add interface to support UI commands
29// 20130304 M. Kelsey -- Add flag to collect and display cascade structure
30// 20130308 M. Kelsey -- Add flag to use separate 3-body momentum generators
31// 20130421 M. Kelsey -- Add flag for CHECK_ECONS, replacing #ifdef's
32// 20130702 M. Kelsey -- Add flag to use N-body phase-space generator
33// 20140311 G. Cosmo -- Implement standard (non-const) singleton pattern
34// 20141030 M. Kelsey -- Add flag to enable direct pi-N absorption
35// 20141211 M. Kelsey -- Change PIN_ABSORPTION flag to double, for energy cut
36
37#ifndef G4CascadeParameters_hh
38#define G4CascadeParameters_hh 1
39
40#include "globals.hh"
41#include <iosfwd>
42
44
45
47public:
48 static const G4CascadeParameters* Instance(); // Singleton
50
51 // Top-level configuration flags
52 static G4int verbose() { return Instance()->VERBOSE_LEVEL; }
53 static G4bool checkConservation() { return Instance()->CHECK_ECONS; }
54 static G4bool usePreCompound() { return Instance()->USE_PRECOMPOUND; }
55 static G4bool doCoalescence() { return Instance()->DO_COALESCENCE; }
56 static G4bool showHistory() { return Instance()->SHOW_HISTORY; }
57 static G4bool use3BodyMom() { return Instance()->USE_3BODYMOM; }
58 static G4bool usePhaseSpace() { return Instance()->USE_PHASESPACE; }
59 static G4double piNAbsorption() { return Instance()->PIN_ABSORPTION; }
60 static const G4String& randomFile() { return Instance()->RANDOM_FILE; }
61
62 // Nuclear structure parameters
63 static G4bool useTwoParam() { return Instance()->TWOPARAM_RADIUS; }
64 static G4double radiusScale() { return Instance()->RADIUS_SCALE; }
65 static G4double radiusSmall() { return Instance()->RADIUS_SMALL; }
66 static G4double radiusAlpha() { return Instance()->RADIUS_ALPHA; }
67 static G4double radiusTrailing() { return Instance()->RADIUS_TRAILING; }
68 static G4double fermiScale() { return Instance()->FERMI_SCALE; }
69 static G4double xsecScale() { return Instance()->XSEC_SCALE; }
70 static G4double gammaQDScale() { return Instance()->GAMMAQD_SCALE; }
71
72 // Final-state clustering cuts
73 static G4double dpMaxDoublet() { return Instance()->DPMAX_DOUBLET; }
74 static G4double dpMaxTriplet() { return Instance()->DPMAX_TRIPLET; }
75 static G4double dpMaxAlpha() { return Instance()->DPMAX_ALPHA; }
76
77 static void DumpConfiguration(std::ostream& os) { Instance()->DumpConfig(os); }
78
79private: // Environment variable values, null pointers mean not set
80 const char* G4CASCADE_VERBOSE;
81 const char* G4CASCADE_CHECK_ECONS;
82 const char* G4CASCADE_USE_PRECOMPOUND;
83 const char* G4CASCADE_DO_COALESCENCE;
84 const char* G4CASCADE_SHOW_HISTORY;
85 const char* G4CASCADE_USE_3BODYMOM;
86 const char* G4CASCADE_USE_PHASESPACE;
87 const char* G4CASCADE_PIN_ABSORPTION;
88 const char* G4CASCADE_RANDOM_FILE;
89 const char* G4NUCMODEL_USE_BEST;
90 const char* G4NUCMODEL_RAD_2PAR;
91 const char* G4NUCMODEL_RAD_SCALE;
92 const char* G4NUCMODEL_RAD_SMALL;
93 const char* G4NUCMODEL_RAD_ALPHA;
94 const char* G4NUCMODEL_RAD_TRAILING;
95 const char* G4NUCMODEL_FERMI_SCALE;
96 const char* G4NUCMODEL_XSEC_SCALE;
97 const char* G4NUCMODEL_GAMMAQD;
98 const char* DPMAX_2CLUSTER;
99 const char* DPMAX_3CLUSTER;
100 const char* DPMAX_4CLUSTER;
101
102 void Initialize(); // Fill parameter values from envvar strings
103
104 G4int VERBOSE_LEVEL; // Top-level configuration flags
105 G4bool CHECK_ECONS;
106 G4bool USE_PRECOMPOUND;
107 G4bool DO_COALESCENCE;
108 G4bool SHOW_HISTORY;
109 G4bool USE_3BODYMOM;
110 G4bool USE_PHASESPACE;
111 G4double PIN_ABSORPTION;
112 G4String RANDOM_FILE;
113
114 G4bool BEST_PAR; // Nuclear structure parameters
115//BEST_PAR has been used in a project on hold.
116//Currently setting BEST_PAR or G4NUCMODEL_USE_BEST does not improve physics performance.
117//Developer can get more information about this from cascade/test/README
118
119 G4bool TWOPARAM_RADIUS;
120 G4double RADIUS_SCALE;
121 G4double RADIUS_SMALL;
122 G4double RADIUS_ALPHA;
123 G4double RADIUS_TRAILING;
124 G4double FERMI_SCALE;
125 G4double XSEC_SCALE;
126 G4double GAMMAQD_SCALE;
127
128 G4double DPMAX_DOUBLET; // Final-state clustering cuts
129 G4double DPMAX_TRIPLET;
130 G4double DPMAX_ALPHA;
131
132private: // Singleton -- no public constructor
134 void DumpConfig(std::ostream& os) const;
135
136 G4CascadeParamMessenger* messenger; // For access via UI commands
138};
139
140#endif /* G4CascadeParameters_hh */
double G4double
Definition: G4Types.hh:83
bool G4bool
Definition: G4Types.hh:86
int G4int
Definition: G4Types.hh:85
static G4double dpMaxDoublet()
static const G4CascadeParameters * Instance()
static G4bool use3BodyMom()
static G4double dpMaxTriplet()
static G4bool doCoalescence()
static G4double xsecScale()
static G4double dpMaxAlpha()
static void DumpConfiguration(std::ostream &os)
static G4bool usePreCompound()
static const G4String & randomFile()
static G4double radiusScale()
static G4bool checkConservation()
static G4bool useTwoParam()
static G4double gammaQDScale()
static G4double radiusAlpha()
static G4double radiusSmall()
static G4double fermiScale()
static G4bool showHistory()
static G4double radiusTrailing()
static G4bool usePhaseSpace()
static G4double piNAbsorption()