Line data Source code
1 : #include "crpropa/massDistribution/ConstantDensity.h" 2 : 3 : #include "kiss/logger.h" 4 : 5 : #include <sstream> 6 : 7 : namespace crpropa{ 8 : 9 3 : ConstantDensity::ConstantDensity(double HI, double HII, double H2) { 10 : // set all types active which are not equal 0 and change number density 11 3 : if(HI!=0) 12 3 : setHI(true, HI); 13 3 : if(HII!=0) 14 3 : setHII(true, HII); 15 3 : if(H2!=0) 16 3 : setH2(true, H2); 17 3 : } 18 : 19 4 : double ConstantDensity::getDensity(const Vector3d &position) const { 20 : double n = 0; 21 : 22 4 : if(isHI) 23 3 : n += HIdensitynumber; 24 4 : if(isHII) 25 3 : n += HIIdensitynumber; 26 4 : if(isH2) 27 3 : n += H2densitynumber; 28 : 29 : // check if all densities are deactivated and raise warning if so 30 4 : if((isHI || isHII || isH2) == false){ 31 2 : KISS_LOG_WARNING 32 1 : << "\nCalled getNucleonDensity on fully deactivated ConstantDensity " 33 1 : << "gas density model. In this case the density is allways set to 0. \n"; 34 : } 35 : 36 4 : return n; 37 : } 38 : 39 4 : double ConstantDensity::getNucleonDensity(const Vector3d &position) const { 40 : double n = 0; 41 : 42 4 : if(isHI) 43 3 : n += HIdensitynumber; 44 4 : if(isHII) 45 3 : n += HIIdensitynumber; 46 4 : if(isH2) 47 3 : n += 2*H2densitynumber; 48 : 49 : // check if all densities are deactivated and raise warning if so 50 4 : if((isHI || isHII || isH2) == false){ 51 2 : KISS_LOG_WARNING 52 1 : << "\nCalled getNucleonDensity on fully deactivated ConstantDensity " 53 1 : << "gas density model. In this case the density is allways set to 0. \n"; 54 : } 55 4 : return n; 56 : } 57 : 58 4 : double ConstantDensity::getHIDensity(const Vector3d &position) const { 59 4 : return HIdensitynumber; 60 : } 61 : 62 4 : double ConstantDensity::getHIIDensity(const Vector3d &position) const{ 63 4 : return HIIdensitynumber; 64 : } 65 : 66 4 : double ConstantDensity::getH2Density(const Vector3d &position) const{ 67 4 : return H2densitynumber; 68 : } 69 : 70 2 : bool ConstantDensity::getIsForHI() { 71 2 : return isHI; 72 : } 73 : 74 2 : bool ConstantDensity::getIsForHII() { 75 2 : return isHII; 76 : } 77 : 78 2 : bool ConstantDensity::getIsForH2() { 79 2 : return isH2; 80 : } 81 : 82 5 : void ConstantDensity::setHI(bool activate, double densitynumber) { 83 5 : isHI = activate; 84 5 : HIdensitynumber = densitynumber; 85 5 : } 86 : 87 1 : void ConstantDensity::setHI(bool activate) { 88 1 : setHI(activate, HIdensitynumber); 89 1 : } 90 : 91 1 : void ConstantDensity::setHI(double densitynumber) { 92 1 : setHI(isHI, densitynumber); 93 1 : } 94 : 95 5 : void ConstantDensity::setHII(bool activate, double densitynumber) { 96 5 : isHII = activate; 97 5 : HIIdensitynumber = densitynumber; 98 5 : } 99 : 100 1 : void ConstantDensity::setHII(bool activate) { 101 1 : setHII(activate, HIIdensitynumber); 102 1 : } 103 : 104 1 : void ConstantDensity::setHII(double densitynumber) { 105 1 : setHII(isHII, densitynumber); 106 1 : } 107 : 108 5 : void ConstantDensity::setH2(bool activate, double densitynumber) { 109 5 : isH2 = activate; 110 5 : H2densitynumber = densitynumber; 111 5 : } 112 : 113 1 : void ConstantDensity::setH2(bool activate) { 114 1 : setH2(activate, H2densitynumber); 115 1 : } 116 : 117 1 : void ConstantDensity::setH2(double densitynumber) { 118 1 : setH2(isH2, densitynumber); 119 1 : } 120 : 121 0 : std::string ConstantDensity::getDescription() { 122 0 : std::stringstream s; 123 0 : s << "ConstantDensity:\n"; 124 0 : s<< "HI component is "; 125 0 : if(!isHI) 126 0 : s<< "not "; 127 0 : s<< "active and has a density of " << HIdensitynumber/ccm << " cm^-3" << "\nHII component is "; 128 0 : if(!isHII) 129 0 : s<< "not "; 130 0 : s<<"active and has a density of " << HIIdensitynumber/ccm<<" cm^-3" << "\nH2 component is "; 131 0 : if(!isH2) 132 0 : s<<"not "; 133 0 : s<<"active and has a density of " << H2densitynumber/ccm << " cm^-3"; 134 0 : return s.str(); 135 0 : } 136 : 137 : } // namespace crpropa