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
G4ParticleHPManager.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//
27// P. Arce, June-2014 Conversion neutron_hp to particle_hp
28//
29#ifndef G4ParticleHPManager_h
30#define G4ParticleHPManager_h 1
31
32// Class Description
33// Manager of NeutronHP
34// Class Description - End
35
36// 121031 First implementation done by T. Koi (SLAC/PPA)
37//
38#include <map>
39#include <vector>
40#include "globals.hh"
41
43
49class G4PhysicsTable;
50struct E_isoAng;
51struct E_P_E_isoAng;
52
54{
55 public:
57
58 private:
62 static G4ParticleHPManager* instance;
63
64 public:
67 //void CloseReactionWhiteBoard(){delete RWB; RWB=NULL;};
69
70 void GetDataStream( G4String , std::istringstream& iss );
71 void GetDataStream2( G4String , std::istringstream& iss );
72 void SetVerboseLevel( G4int i );
73 G4int GetVerboseLevel() {return verboseLevel; };
74
75 void DumpDataSource();
76
77 G4bool GetUseOnlyPhotoEvaporation() { return USE_ONLY_PHOTONEVAPORATION; };
78 G4bool GetSkipMissingIsotopes() { return SKIP_MISSING_ISOTOPES; };
79 G4bool GetNeglectDoppler() { return NEGLECT_DOPPLER; };
80 G4bool GetDoNotAdjustFinalState() { return DO_NOT_ADJUST_FINAL_STATE; };
81 G4bool GetProduceFissionFragments() { return PRODUCE_FISSION_FRAGMENTS; };
82 G4bool GetUseWendtFissionModel() { return USE_WENDT_FISSION_MODEL; };
83 G4bool GetUseNRESP71Model() { return USE_NRESP71_MODEL; };
84
85 void SetUseOnlyPhotoEvaporation( G4bool val ) { USE_ONLY_PHOTONEVAPORATION = val; };
86 void SetSkipMissingIsotopes( G4bool val ) { SKIP_MISSING_ISOTOPES = val; };
87 void SetNeglectDoppler( G4bool val ) { NEGLECT_DOPPLER = val; };
88 void SetDoNotAdjustFinalState( G4bool val ) { DO_NOT_ADJUST_FINAL_STATE = val; };
90 // Make sure both fission fragment models are not active at same time
91 USE_WENDT_FISSION_MODEL ? PRODUCE_FISSION_FRAGMENTS = false : PRODUCE_FISSION_FRAGMENTS = val ; };
92 void SetUseWendtFissionModel( G4bool val ) { USE_WENDT_FISSION_MODEL = val;
93 // Make sure both fission fragment models are not active at same time
94 if ( USE_WENDT_FISSION_MODEL ) PRODUCE_FISSION_FRAGMENTS = false; };
95 void SetUseNRESP71Model( G4bool val ) { USE_NRESP71_MODEL = val; };
96
97 void DumpSetting(); // Needs to be called somewhere to print out information once per run.
98
99 void RegisterElasticCrossSections( G4PhysicsTable* val ){ theElasticCrossSections = val; };
100 G4PhysicsTable* GetElasticCrossSections(){ return theElasticCrossSections; };
101 void RegisterCaptureCrossSections( G4PhysicsTable* val ){ theCaptureCrossSections = val; };
102 G4PhysicsTable* GetCaptureCrossSections(){ return theCaptureCrossSections; };
105 void RegisterFissionCrossSections( G4PhysicsTable* val ){ theFissionCrossSections = val; };
106 G4PhysicsTable* GetFissionCrossSections(){ return theFissionCrossSections; };
107
108 std::vector<G4ParticleHPChannel*>* GetElasticFinalStates() { return theElasticFSs; };
109 void RegisterElasticFinalStates( std::vector<G4ParticleHPChannel*>* val ) { theElasticFSs = val; };
110 std::vector<G4ParticleHPChannelList*>* GetInelasticFinalStates( const G4ParticleDefinition* );
111 void RegisterInelasticFinalStates( const G4ParticleDefinition* , std::vector<G4ParticleHPChannelList*>* );
112 std::vector<G4ParticleHPChannel*>* GetCaptureFinalStates() { return theCaptureFSs; };
113 void RegisterCaptureFinalStates( std::vector<G4ParticleHPChannel*>* val ) { theCaptureFSs = val; };
114 std::vector<G4ParticleHPChannel*>* GetFissionFinalStates() { return theFissionFSs; };
115 void RegisterFissionFinalStates( std::vector<G4ParticleHPChannel*>* val ) { theFissionFSs = val; };
116
117 std::map<G4int,std::map<G4double,G4ParticleHPVector*>*>* GetThermalScatteringCoherentCrossSections() { return theTSCoherentCrossSections; };
118 void RegisterThermalScatteringCoherentCrossSections( std::map<G4int,std::map<G4double,G4ParticleHPVector*>*>* val ) { theTSCoherentCrossSections = val; };
119 std::map<G4int,std::map<G4double,G4ParticleHPVector*>*>* GetThermalScatteringIncoherentCrossSections() { return theTSIncoherentCrossSections; };
120 void RegisterThermalScatteringIncoherentCrossSections( std::map<G4int,std::map<G4double,G4ParticleHPVector*>*>* val ) { theTSIncoherentCrossSections = val; };
121 std::map<G4int,std::map<G4double,G4ParticleHPVector*>*>* GetThermalScatteringInelasticCrossSections() { return theTSInelasticCrossSections; };
122 void RegisterThermalScatteringInelasticCrossSections( std::map<G4int,std::map<G4double,G4ParticleHPVector*>*>* val ) { theTSInelasticCrossSections = val; };
123
124 std::map < G4int , std::map < G4double , std::vector < std::pair< G4double , G4double >* >* >* >* GetThermalScatteringCoherentFinalStates(){ return theTSCoherentFinalStates; };
125 void RegisterThermalScatteringCoherentFinalStates( std::map < G4int , std::map < G4double , std::vector < std::pair< G4double , G4double >* >* >* >* val ) { theTSCoherentFinalStates = val; };
126 std::map < G4int , std::map < G4double , std::vector < E_isoAng* >* >* >* GetThermalScatteringIncoherentFinalStates(){ return theTSIncoherentFinalStates; };
127 void RegisterThermalScatteringIncoherentFinalStates( std::map < G4int , std::map < G4double , std::vector < E_isoAng* >* >* >* val ) { theTSIncoherentFinalStates = val; };
128 std::map < G4int , std::map < G4double , std::vector < E_P_E_isoAng* >* >* >* GetThermalScatteringInelasticFinalStates(){ return theTSInelasticFinalStates; };
129 void RegisterThermalScatteringInelasticFinalStates( std::map < G4int , std::map < G4double , std::vector < E_P_E_isoAng* >* >* >* val ) { theTSInelasticFinalStates = val; };
130
131
132 private:
133 void register_data_file( G4String , G4String );
134 std::map<G4String,G4String> mDataEvaluation;
135 /*G4ParticleHPReactionWhiteBoard* RWB;*/
136
137 G4int verboseLevel;
138
139 G4ParticleHPMessenger* messenger;
140 G4bool USE_ONLY_PHOTONEVAPORATION;
141 G4bool SKIP_MISSING_ISOTOPES;
142 G4bool NEGLECT_DOPPLER;
143 G4bool DO_NOT_ADJUST_FINAL_STATE;
144 G4bool PRODUCE_FISSION_FRAGMENTS;
145 G4bool USE_WENDT_FISSION_MODEL;
146 G4bool USE_NRESP71_MODEL;
147
148 G4PhysicsTable* theElasticCrossSections;
149 G4PhysicsTable* theCaptureCrossSections;
150 std::map< const G4ParticleDefinition* , G4PhysicsTable* > theInelasticCrossSections;
151 G4PhysicsTable* theFissionCrossSections;
152
153 std::vector<G4ParticleHPChannel*>* theElasticFSs;
154 std::map< const G4ParticleDefinition* , std::vector<G4ParticleHPChannelList*>* > theInelasticFSs;
155 std::vector<G4ParticleHPChannel*>* theCaptureFSs;
156 std::vector<G4ParticleHPChannel*>* theFissionFSs;
157
158 std::map< G4int , std::map< G4double , G4ParticleHPVector* >* >* theTSCoherentCrossSections;
159 std::map< G4int , std::map< G4double , G4ParticleHPVector* >* >* theTSIncoherentCrossSections;
160 std::map< G4int , std::map< G4double , G4ParticleHPVector* >* >* theTSInelasticCrossSections;
161
162 std::map< G4int , std::map< G4double , std::vector< std::pair< G4double , G4double >* >* >* >* theTSCoherentFinalStates;
163 std::map< G4int , std::map< G4double , std::vector< E_isoAng* >* >* >* theTSIncoherentFinalStates;
164 std::map< G4int , std::map< G4double , std::vector< E_P_E_isoAng* >* >* >* theTSInelasticFinalStates;
165
166};
167#endif
double G4double
Definition: G4Types.hh:83
bool G4bool
Definition: G4Types.hh:86
int G4int
Definition: G4Types.hh:85
void SetUseNRESP71Model(G4bool val)
void RegisterThermalScatteringCoherentFinalStates(std::map< G4int, std::map< G4double, std::vector< std::pair< G4double, G4double > * > * > * > *val)
void SetNeglectDoppler(G4bool val)
G4PhysicsTable * GetElasticCrossSections()
G4PhysicsTable * GetCaptureCrossSections()
void RegisterElasticFinalStates(std::vector< G4ParticleHPChannel * > *val)
void RegisterFissionFinalStates(std::vector< G4ParticleHPChannel * > *val)
void SetProduceFissionFragments(G4bool val)
void RegisterThermalScatteringIncoherentCrossSections(std::map< G4int, std::map< G4double, G4ParticleHPVector * > * > *val)
std::map< G4int, std::map< G4double, G4ParticleHPVector * > * > * GetThermalScatteringCoherentCrossSections()
G4PhysicsTable * GetFissionCrossSections()
void SetSkipMissingIsotopes(G4bool val)
std::map< G4int, std::map< G4double, G4ParticleHPVector * > * > * GetThermalScatteringInelasticCrossSections()
void SetDoNotAdjustFinalState(G4bool val)
std::vector< G4ParticleHPChannel * > * GetFissionFinalStates()
void RegisterThermalScatteringIncoherentFinalStates(std::map< G4int, std::map< G4double, std::vector< E_isoAng * > * > * > *val)
void GetDataStream2(G4String, std::istringstream &iss)
void RegisterThermalScatteringInelasticFinalStates(std::map< G4int, std::map< G4double, std::vector< E_P_E_isoAng * > * > * > *val)
std::vector< G4ParticleHPChannelList * > * GetInelasticFinalStates(const G4ParticleDefinition *)
std::vector< G4ParticleHPChannel * > * GetCaptureFinalStates()
void RegisterInelasticFinalStates(const G4ParticleDefinition *, std::vector< G4ParticleHPChannelList * > *)
std::map< G4int, std::map< G4double, std::vector< std::pair< G4double, G4double > * > * > * > * GetThermalScatteringCoherentFinalStates()
void RegisterThermalScatteringCoherentCrossSections(std::map< G4int, std::map< G4double, G4ParticleHPVector * > * > *val)
G4PhysicsTable * GetInelasticCrossSections(const G4ParticleDefinition *)
void RegisterInelasticCrossSections(const G4ParticleDefinition *, G4PhysicsTable *)
void RegisterElasticCrossSections(G4PhysicsTable *val)
void RegisterCaptureCrossSections(G4PhysicsTable *val)
std::map< G4int, std::map< G4double, G4ParticleHPVector * > * > * GetThermalScatteringIncoherentCrossSections()
static G4ParticleHPManager * GetInstance()
std::vector< G4ParticleHPChannel * > * GetElasticFinalStates()
void SetUseWendtFissionModel(G4bool val)
std::map< G4int, std::map< G4double, std::vector< E_isoAng * > * > * > * GetThermalScatteringIncoherentFinalStates()
void GetDataStream(G4String, std::istringstream &iss)
std::map< G4int, std::map< G4double, std::vector< E_P_E_isoAng * > * > * > * GetThermalScatteringInelasticFinalStates()
void RegisterThermalScatteringInelasticCrossSections(std::map< G4int, std::map< G4double, G4ParticleHPVector * > * > *val)
void RegisterCaptureFinalStates(std::vector< G4ParticleHPChannel * > *val)
void SetUseOnlyPhotoEvaporation(G4bool val)
void RegisterFissionCrossSections(G4PhysicsTable *val)
G4ParticleHPReactionWhiteBoard * GetReactionWhiteBoard()