Geant4 Cross Reference |
1 /* 2 # <<BEGIN-copyright>> 3 # <<END-copyright>> 4 */ 5 6 #include "MCGIDI.h" 7 8 /* ---- MCGIDI_quantitiesLookupModes ---- */ 9 /* 10 ========================================================= 11 */ 12 MCGIDI_quantitiesLookupModes::MCGIDI_quantitiesLookupModes( int projectilesPOPID ) { 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 */ 25 MCGIDI_quantitiesLookupModes::~MCGIDI_quantitiesLookupModes( ) { 26 27 } 28 /* 29 ========================================================= 30 */ 31 int 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 */ 46 enum 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 */ 59 std::vector<std::string> MCGIDI_quantitiesLookupModes::getListOfLookupQuanities( ) const { 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 */ 71 void 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 */ 84 void MCGIDI_quantitiesLookupModes::setModeAll( enum MCGIDI_quantityLookupMode mode ) { 85 86 mCrossSectionMode = mode; 87 mMultiplicityMode = mode; 88 } 89