ECCE @ EIC Software
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Groups Pages
G4CascadeParameters.hh
Go to the documentation of this file. Or view the newest version in sPHENIX GitHub for file G4CascadeParameters.hh
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 
47 public:
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; }
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; }
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; }
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 
79 private: // Environment variable values, null pointers mean not set
80  const char* G4CASCADE_VERBOSE;
81  const char* G4CASCADE_CHECK_ECONS;
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;
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
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 
127 
128  G4double DPMAX_DOUBLET; // Final-state clustering cuts
131 
132 private: // Singleton -- no public constructor
134  void DumpConfig(std::ostream& os) const;
135 
136  G4CascadeParamMessenger* messenger; // For access via UI commands
138 
140 };
141 
142 #endif /* G4CascadeParameters_hh */