Geant4 9.6.0
Toolkit for the simulation of the passage of particles through matter
Loading...
Searching...
No Matches
G4CascadeParameters.cc
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// G4CascadeParameters.cc
27// Encapsulate all user-configurable parameters with associated envvars
28//
29// 20120912 M. Kelsey -- Add interface to support UI commands
30
33#include <stdlib.h>
34#include <iostream>
35using std::endl;
36
37
38// Singleton accessor
39
41 static const G4CascadeParameters theInstance;
42 return &theInstance;
43}
44
45
46// Constructor initializes everything once
47
48#define OLD_RADIUS_UNITS (3.3836/1.2) // Used with NucModel params
49
50G4CascadeParameters::G4CascadeParameters()
51 : G4CASCADE_VERBOSE(getenv("G4CASCADE_VERBOSE")),
52 G4CASCADE_USE_PRECOMPOUND(getenv("G4CASCADE_USE_PRECOMPOUND")),
53 G4CASCADE_DO_COALESCENCE(getenv("G4CASCADE_DO_COALESCENCE")),
54 G4CASCADE_RANDOM_FILE(getenv("G4CASCADE_RANDOM_FILE")),
55 G4NUCMODEL_USE_BEST(getenv("G4NUCMODEL_USE_BEST")),
56 G4NUCMODEL_RAD_2PAR(getenv("G4NUCMODEL_RAD_2PAR")),
57 G4NUCMODEL_RAD_SCALE(getenv("G4NUCMODEL_RAD_SCALE")),
58 G4NUCMODEL_RAD_SMALL(getenv("G4NUCMODEL_RAD_SMALL")),
59 G4NUCMODEL_RAD_ALPHA(getenv("G4NUCMODEL_RAD_ALPHA")),
60 G4NUCMODEL_RAD_TRAILING(getenv("G4NUCMODEL_RAD_TRAILING")),
61 G4NUCMODEL_FERMI_SCALE(getenv("G4NUCMODEL_FERMI_SCALE")),
62 G4NUCMODEL_XSEC_SCALE(getenv("G4NUCMODEL_XSEC_SCALE")),
63 G4NUCMODEL_GAMMAQD(getenv("G4NUCMODEL_GAMMAQD")),
64 DPMAX_2CLUSTER(getenv("DPMAX_2CLUSTER")),
65 DPMAX_3CLUSTER(getenv("DPMAX_3CLUSTER")),
66 DPMAX_4CLUSTER(getenv("DPMAX_4CLUSTER")),
67 messenger(0) {
68 messenger = new G4CascadeParamMessenger(this);
69 Initialize();
70}
71
72void G4CascadeParameters::Initialize() {
73 VERBOSE_LEVEL = (G4CASCADE_VERBOSE ? atoi(G4CASCADE_VERBOSE) : 0);
74 USE_PRECOMPOUND = (0!=G4CASCADE_USE_PRECOMPOUND);
75 DO_COALESCENCE = (0!=G4CASCADE_DO_COALESCENCE);
76 RANDOM_FILE = (G4CASCADE_RANDOM_FILE ? G4CASCADE_RANDOM_FILE : "");
77 BEST_PAR = (0!=G4NUCMODEL_USE_BEST);
78 TWOPARAM_RADIUS = (0!=G4NUCMODEL_RAD_2PAR);
79 RADIUS_SCALE = (G4NUCMODEL_RAD_SCALE ? strtod(G4NUCMODEL_RAD_SCALE,0)
80 : (BEST_PAR?1.0:OLD_RADIUS_UNITS));
81 RADIUS_SMALL = ((G4NUCMODEL_RAD_SMALL ? strtod(G4NUCMODEL_RAD_SMALL,0)
82 : (BEST_PAR?1.992:(8.0/OLD_RADIUS_UNITS))) * RADIUS_SCALE);
83 RADIUS_ALPHA = (G4NUCMODEL_RAD_ALPHA ? strtod(G4NUCMODEL_RAD_ALPHA,0)
84 : (BEST_PAR?0.84:0.70));
85 RADIUS_TRAILING = ((G4NUCMODEL_RAD_TRAILING ? strtod(G4NUCMODEL_RAD_TRAILING,0)
86 : (BEST_PAR?0.70:0.0)) * RADIUS_SCALE);
87 FERMI_SCALE = ((G4NUCMODEL_FERMI_SCALE ? strtod(G4NUCMODEL_FERMI_SCALE,0)
88 : (BEST_PAR?0.685:(1.932/OLD_RADIUS_UNITS))) * RADIUS_SCALE);
89 XSEC_SCALE = (G4NUCMODEL_XSEC_SCALE ? strtod(G4NUCMODEL_XSEC_SCALE,0)
90 : (BEST_PAR?0.1:1.0) );
91 GAMMAQD_SCALE = (G4NUCMODEL_GAMMAQD?strtod(G4NUCMODEL_GAMMAQD,0):1.);
92 DPMAX_DOUBLET = (DPMAX_2CLUSTER ? strtod(DPMAX_2CLUSTER,0) : 0.090);
93 DPMAX_TRIPLET = (DPMAX_3CLUSTER ? strtod(DPMAX_3CLUSTER,0) : 0.108);
94 DPMAX_ALPHA = (DPMAX_4CLUSTER ? strtod(DPMAX_4CLUSTER,0) : 0.115);
95}
96
98 delete messenger;
99}
100
101
102// Report any non-default parameters (used by G4CascadeInterface)
103
104void G4CascadeParameters::DumpConfig(std::ostream& os) const {
105 if (G4CASCADE_VERBOSE)
106 os << "G4CASCADE_VERBOSE = " << G4CASCADE_VERBOSE << endl;
107 if (G4CASCADE_USE_PRECOMPOUND)
108 os << "G4CASCADE_USE_PRECOMPOUND = " << G4CASCADE_USE_PRECOMPOUND << endl;
109 if (G4CASCADE_DO_COALESCENCE)
110 os << "G4CASCADE_DO_COALESCENCE = " << G4CASCADE_DO_COALESCENCE << endl;
111 if (G4CASCADE_RANDOM_FILE)
112 os << "G4CASCADE_RANDOM_FILE = " << G4CASCADE_RANDOM_FILE << endl;
113 if (G4NUCMODEL_USE_BEST)
114 os << "G4NUCMODEL_USE_BEST = " << G4NUCMODEL_USE_BEST << endl;
115 if (G4NUCMODEL_RAD_2PAR)
116 os << "G4NUCMODEL_RAD_2PAR = " << G4NUCMODEL_RAD_2PAR << endl;
117 if (G4NUCMODEL_RAD_SCALE)
118 os << "G4NUCMODEL_RAD_SCALE = " << G4NUCMODEL_RAD_SCALE << endl;
119 if (G4NUCMODEL_RAD_SMALL)
120 os << "G4NUCMODEL_RAD_SMALL = " << G4NUCMODEL_RAD_SMALL << endl;
121 if (G4NUCMODEL_RAD_ALPHA)
122 os << "G4NUCMODEL_RAD_ALPHA = " << G4NUCMODEL_RAD_ALPHA << endl;
123 if (G4NUCMODEL_RAD_TRAILING)
124 os << "G4NUCMODEL_RAD_TRAILING = " << G4NUCMODEL_RAD_TRAILING << endl;
125 if (G4NUCMODEL_FERMI_SCALE)
126 os << "G4NUCMODEL_FERMI_SCALE = " << G4NUCMODEL_FERMI_SCALE << endl;
127 if (G4NUCMODEL_XSEC_SCALE)
128 os << "G4NUCMODEL_XSEC_SCALE = " << G4NUCMODEL_XSEC_SCALE << endl;
129 if (G4NUCMODEL_GAMMAQD)
130 os << "G4NUCMODEL_GAMMAQD = " << G4NUCMODEL_GAMMAQD << endl;
131 if (DPMAX_2CLUSTER)
132 os << "DPMAX_2CLUSTER = " << DPMAX_2CLUSTER << endl;
133 if (DPMAX_3CLUSTER)
134 os << "DPMAX_3CLUSTER = " << DPMAX_3CLUSTER << endl;
135 if (DPMAX_4CLUSTER)
136 os << "DPMAX_4CLUSTER = " << DPMAX_4CLUSTER << endl;
137}
#define OLD_RADIUS_UNITS
static const G4CascadeParameters * Instance()