Geant4 11.2.2
Toolkit for the simulation of the passage of particles through matter
Loading...
Searching...
No Matches
MCGIDI_quantitiesLookupMode.cc
Go to the documentation of this file.
1/*
2# <<BEGIN-copyright>>
3# <<END-copyright>>
4*/
5
6#include "MCGIDI.h"
7
8/* ---- MCGIDI_quantitiesLookupModes ---- */
9/*
10=========================================================
11*/
13
14 mProjectilesPOPID = projectilesPOPID;
15 mProjectileEnergy = -1.;
16 mGroupIndex = -1;
17 mProjectileEnergyForGroupIndex = -1.;
18 mTemperature = 0.;
19 mCrossSectionMode = MCGIDI_quantityLookupMode_pointwise;
20 mMultiplicityMode = MCGIDI_quantityLookupMode_pointwise;
21}
22/*
23=========================================================
24*/
28/*
29=========================================================
30*/
31int MCGIDI_quantitiesLookupModes::setGroupIndex( GIDI_settings const &settings, bool encloseOutOfRange ) {
32
33 GIDI_settings_particle const *particle = settings.getParticle( mProjectilesPOPID );
34 if( particle == NULL ) throw 1;
35
36 mGroupIndex = particle->getGroupIndexFromEnergy( mProjectileEnergy, encloseOutOfRange );
37 if( mGroupIndex == -3 ) throw 1;
38
39 mProjectileEnergyForGroupIndex = mProjectileEnergy;
40 if( mGroupIndex < 0 ) mProjectileEnergyForGroupIndex = -1;
41 return( mGroupIndex );
42}
43/*
44=========================================================
45*/
46enum MCGIDI_quantityLookupMode MCGIDI_quantitiesLookupModes::getMode( std::string const &quantity ) const {
47
48 if( quantity == std::string( "cross section" ) ) {
49 return( mCrossSectionMode ); }
50 else if( quantity == std::string( "multiplicity" ) ) {
51 return( mMultiplicityMode ); }
52 else {
53 throw 1;
54 }
55}
56/*
57=========================================================
58*/
60
61 std::vector<std::string> quanities;
62
63 quanities.push_back( std::string( "cross section" ) );
64 quanities.push_back( std::string( "multiplicity" ) );
65
66 return( quanities );
67}
68/*
69=========================================================
70*/
71void MCGIDI_quantitiesLookupModes::setMode( std::string const &quantity, enum MCGIDI_quantityLookupMode mode ) {
72
73 if( quantity == std::string( "cross section" ) ) {
74 mCrossSectionMode = mode; }
75 else if( quantity == std::string( "multiplicity" ) ) {
76 mMultiplicityMode = mode; }
77 else {
78 throw 1;
79 }
80}
81/*
82=========================================================
83*/
85
86 mCrossSectionMode = mode;
87 mMultiplicityMode = mode;
88}
MCGIDI_quantityLookupMode
Definition MCGIDI.h:73
@ MCGIDI_quantityLookupMode_pointwise
Definition MCGIDI.h:74
int getGroupIndexFromEnergy(double e_in, bool encloseOutOfRange) const
GIDI_settings_particle const * getParticle(int PoPId) const
enum MCGIDI_quantityLookupMode getMode(std::string const &quantity) const
MCGIDI_quantitiesLookupModes(int projectilesPOPID)
int setGroupIndex(GIDI_settings const &settings, bool encloseOutOfRange)
void setMode(std::string const &quantity, enum MCGIDI_quantityLookupMode mode)
void setModeAll(enum MCGIDI_quantityLookupMode mode)
std::vector< std::string > getListOfLookupQuanities() const