ECCE @ EIC Software
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Groups Pages
G4CascadeParameters.cc
Go to the documentation of this file. Or view the newest version in sPHENIX GitHub for file G4CascadeParameters.cc
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 // 20140929 M. Kelsey -- Enable some parameters as default true (must be set
35 // '0' for false): PreCompound, phase-space, clustering,
36 // trailing effect
37 // 20141111 M. Kelsey -- Revert defaults for PreCompound, phase-space,
38 // and trailing effect.
39 // 20141121 Use G4AutoDelete to avoid end-of-thread memory leaks
40 // 20141211 M. Kelsey -- Change PIN_ABSORPTION flag to double, for energy cut
41 
42 #include "G4CascadeParameters.hh"
44 #include "G4AutoDelete.hh"
45 #include <stdlib.h>
46 #include <iostream>
47 using std::endl;
48 
49 #define OLD_RADIUS_UNITS (3.3836/1.2) // Used with NucModel params
50 
52 namespace {
54  class BERTParameters {
55  public:
56  BERTParameters(){
57  //HDP.SetDefault("NAME",VALUE,LOWER_LIMIT(default=-DBL_MAX),UPPER_LIMIT(default=DBL_MAX));
58  HDP.SetDefault( "BERT_FERMI_SCALE" , 1.932/OLD_RADIUS_UNITS , 1.932/OLD_RADIUS_UNITS/2 , 1.932/OLD_RADIUS_UNITS*2 );
59  HDP.SetDefault( "BERT_RADIUS_SCALE" , OLD_RADIUS_UNITS , OLD_RADIUS_UNITS/2 , OLD_RADIUS_UNITS*2 );
60  HDP.SetDefault( "BERT_RAD_TRAILING" , 0. , 0. , 2. );
61  HDP.SetDefault( "BERT_XSEC_SCALE" , 1.0 , 0.5 , 2. );
62  }
63  };
64  BERTParameters BP;
65 }
66 
67 
68 // Singleton accessor
69 
71 
73  if (!fpInstance) {
76  }
77 
78  return fpInstance;
79 }
80 
81 
82 // Constructor initializes everything once
83 
84 //#define OLD_RADIUS_UNITS (3.3836/1.2) // Used with NucModel params
85 
87  : G4CASCADE_VERBOSE(std::getenv("G4CASCADE_VERBOSE")),
88  G4CASCADE_CHECK_ECONS(std::getenv("G4CASCADE_CHECK_ECONS")),
89  G4CASCADE_USE_PRECOMPOUND(std::getenv("G4CASCADE_USE_PRECOMPOUND")),
90  G4CASCADE_DO_COALESCENCE(std::getenv("G4CASCADE_DO_COALESCENCE")),
91  G4CASCADE_SHOW_HISTORY(std::getenv("G4CASCADE_SHOW_HISTORY")),
92  G4CASCADE_USE_3BODYMOM(std::getenv("G4CASCADE_USE_3BODYMOM")),
93  G4CASCADE_USE_PHASESPACE(std::getenv("G4CASCADE_USE_PHASESPACE")),
94  G4CASCADE_PIN_ABSORPTION(std::getenv("G4CASCADE_PIN_ABSORPTION")),
95  G4CASCADE_RANDOM_FILE(std::getenv("G4CASCADE_RANDOM_FILE")),
96  G4NUCMODEL_USE_BEST(std::getenv("G4NUCMODEL_USE_BEST")),
97  G4NUCMODEL_RAD_2PAR(std::getenv("G4NUCMODEL_RAD_2PAR")),
98  G4NUCMODEL_RAD_SCALE(std::getenv("G4NUCMODEL_RAD_SCALE")),
99  G4NUCMODEL_RAD_SMALL(std::getenv("G4NUCMODEL_RAD_SMALL")),
100  G4NUCMODEL_RAD_ALPHA(std::getenv("G4NUCMODEL_RAD_ALPHA")),
101  G4NUCMODEL_RAD_TRAILING(std::getenv("G4NUCMODEL_RAD_TRAILING")),
102  G4NUCMODEL_FERMI_SCALE(std::getenv("G4NUCMODEL_FERMI_SCALE")),
103  G4NUCMODEL_XSEC_SCALE(std::getenv("G4NUCMODEL_XSEC_SCALE")),
104  G4NUCMODEL_GAMMAQD(std::getenv("G4NUCMODEL_GAMMAQD")),
105  DPMAX_2CLUSTER(std::getenv("DPMAX_2CLUSTER")),
106  DPMAX_3CLUSTER(std::getenv("DPMAX_3CLUSTER")),
107  DPMAX_4CLUSTER(std::getenv("DPMAX_4CLUSTER")),
108  messenger(0) {
110  Initialize();
111 }
112 
117  G4CASCADE_USE_PRECOMPOUND[0]!='0');
119  G4CASCADE_DO_COALESCENCE[0]!='0');
123  G4CASCADE_USE_PHASESPACE[0]!='0');
125  : 0.);
128  TWOPARAM_RADIUS = (0!=G4NUCMODEL_RAD_2PAR); // && G4NUCMODEL_RAD_2PAR[0]!='0');
130  : (BEST_PAR?1.0:OLD_RADIUS_UNITS));
131  if ( G4NUCMODEL_RAD_SCALE == 0 && BEST_PAR == 0 ) HDP.DeveloperGet("BERT_RADIUS_SCALE",RADIUS_SCALE);
133  : (BEST_PAR?1.992:(8.0/OLD_RADIUS_UNITS))) * RADIUS_SCALE);
135  : (BEST_PAR?0.84:0.70));
137  : 0.) * RADIUS_SCALE);
140  : (BEST_PAR?0.685:(1.932/OLD_RADIUS_UNITS))) * RADIUS_SCALE);
141  if ( G4NUCMODEL_FERMI_SCALE == 0 && BEST_PAR == 0 ) HDP.DeveloperGet("BERT_FERMI_SCALE",FERMI_SCALE),FERMI_SCALE*=RADIUS_SCALE;
143  : (BEST_PAR?0.1:1.0) );
144  if ( G4NUCMODEL_XSEC_SCALE == 0 && BEST_PAR == 0 ) HDP.DeveloperGet("BERT_XSEC_SCALE",XSEC_SCALE);
146  DPMAX_DOUBLET = (DPMAX_2CLUSTER ? strtod(DPMAX_2CLUSTER,0) : 0.090);
147  DPMAX_TRIPLET = (DPMAX_3CLUSTER ? strtod(DPMAX_3CLUSTER,0) : 0.108);
148  DPMAX_ALPHA = (DPMAX_4CLUSTER ? strtod(DPMAX_4CLUSTER,0) : 0.115);
149 }
150 
152  delete messenger;
153 }
154 
155 
156 // Report any non-default parameters (used by G4CascadeInterface)
157 
158 void G4CascadeParameters::DumpConfig(std::ostream& os) const {
159  if (G4CASCADE_VERBOSE)
160  os << "G4CASCADE_VERBOSE = " << G4CASCADE_VERBOSE << endl;
162  os << "G4CASCADE_CHECK_ECONS = " << G4CASCADE_CHECK_ECONS << endl;
164  os << "G4CASCADE_USE_PRECOMPOUND = " << G4CASCADE_USE_PRECOMPOUND << endl;
166  os << "G4CASCADE_DO_COALESCENCE = " << G4CASCADE_DO_COALESCENCE << endl;
168  os << "G4CASCADE_PIN_ABSORPTION = " << G4CASCADE_PIN_ABSORPTION << endl;
170  os << "G4CASCADE_SHOW_HISTORY = " << G4CASCADE_SHOW_HISTORY << endl;
172  os << "G4CASCADE_USE_3BODYMOM = " << G4CASCADE_USE_3BODYMOM << endl;
174  os << "G4CASCADE_USE_PHASESPACE = " << G4CASCADE_USE_PHASESPACE << endl;
176  os << "G4CASCADE_RANDOM_FILE = " << G4CASCADE_RANDOM_FILE << endl;
178  os << "G4NUCMODEL_USE_BEST = " << G4NUCMODEL_USE_BEST << endl;
180  os << "G4NUCMODEL_RAD_2PAR = " << G4NUCMODEL_RAD_2PAR << endl;
182  os << "G4NUCMODEL_RAD_SCALE = " << G4NUCMODEL_RAD_SCALE << endl;
184  os << "G4NUCMODEL_RAD_SMALL = " << G4NUCMODEL_RAD_SMALL << endl;
186  os << "G4NUCMODEL_RAD_ALPHA = " << G4NUCMODEL_RAD_ALPHA << endl;
188  os << "G4NUCMODEL_RAD_TRAILING = " << G4NUCMODEL_RAD_TRAILING << endl;
190  os << "G4NUCMODEL_FERMI_SCALE = " << G4NUCMODEL_FERMI_SCALE << endl;
192  os << "G4NUCMODEL_XSEC_SCALE = " << G4NUCMODEL_XSEC_SCALE << endl;
193  if (G4NUCMODEL_GAMMAQD)
194  os << "G4NUCMODEL_GAMMAQD = " << G4NUCMODEL_GAMMAQD << endl;
195  if (DPMAX_2CLUSTER)
196  os << "DPMAX_2CLUSTER = " << DPMAX_2CLUSTER << endl;
197  if (DPMAX_3CLUSTER)
198  os << "DPMAX_3CLUSTER = " << DPMAX_3CLUSTER << endl;
199  if (DPMAX_4CLUSTER)
200  os << "DPMAX_4CLUSTER = " << DPMAX_4CLUSTER << endl;
201 }