C program for neutron efficiency: Difference between revisions
Jump to navigation
Jump to search
No edit summary |
No edit summary |
||
| (7 intermediate revisions by the same user not shown) | |||
| Line 1: | Line 1: | ||
#include <iostream> | |||
#include <cmath> | |||
using namespace std; | |||
double crossSectionHydrogenFunction(); | |||
double numberCarbonFunction(double thickness, | |||
const double CUBICCENTIMETERCARBON); | |||
double numberHydrogenFunction(double thickness, | |||
const double CUBICCENTIMETERHYDROGEN); | |||
double crossSectionCarbonFunction(); | |||
void efficiencyFunction(double numberHydrogen, double numberCarbon, | |||
double crossSectionHydrogen, double crossSectionCarbon, | |||
double thickness); | |||
<code>/************************************************************************ | |||
/ | |||
* This program is to find the | * This program is to find the | ||
* efficiency of a neutron detector. | * efficiency of a neutron detector. | ||
************************************************************************/ | ************************************************************************/ | ||
double main() | double main() | ||
{ | {</code> | ||
double neutronEnergy; | |||
double numberHydrogen; | |||
double numberCarbon; | |||
double crossSectionHydrogen; | |||
double crossSectionCarbon; | |||
double thickness; | |||
const double CUBICCENTIMETERCARBON = 5.23e22; | |||
const double CUBICCENTIMETERHYDROGEN = 4.74e22; | |||
cout << endl; | |||
cout << "Enter thickness of detector (in centimeters): "; | |||
cin >> thickness; | |||
crossSectionHydrogen = crossSectionHydrogenFunction(); | |||
numberCarbon = numberCarbonFunction(thickness, | |||
CUBICCENTIMETERCARBON); | |||
numberHydrogen = numberHydrogenFunction(thickness, | |||
CUBICCENTIMETERHYDROGEN); | |||
crossSectionCarbon = crossSectionCarbonFunction(); | |||
efficiencyFunction(numberHydrogen, numberCarbon, | |||
crossSectionHydrogen, crossSectionCarbon, | |||
thickness); | |||
} | } | ||
/ | /********************************************************************** | ||
* Equation for cross section of hydrogen according to | * Equation for cross section of hydrogen according to | ||
* equation 15-9 from Radiation Detection and Measurement | * equation 15-9 from Radiation Detection and Measurement | ||
| Line 57: | Line 50: | ||
*********************************************************************/ | *********************************************************************/ | ||
double crossSectionHydrogenFunction() | double crossSectionHydrogenFunction() | ||
{ | |||
double neutronEnergy; | |||
double crossSectionHydrogen; | |||
cout << endl; | |||
cout << "Enter neutron energy (in MeV): "; | |||
cin >> neutronEnergy; | |||
crossSectionHydrogen = ((4.83e-24 / sqrt(neutronEnergy)) | |||
- .578e-24); | - .578e-24); | ||
return crossSectionHydrogen; | |||
} | |||
/********************************************************************** | /********************************************************************** | ||
* Equation for calculating the number of Carbons in | |||
* the problem per cubic centimeter, dependent on what | |||
* the user put in for the thickness of the detector. | |||
*********************************************************************/ | |||
double numberCarbonFunction(double thickness, const | double numberCarbonFunction(double thickness, const | ||
double CUBICCENTIMETERCARBON) | |||
{ | { | ||
double numberCarbon; | |||
numberCarbon = CUBICCENTIMETERCARBON; | |||
return numberCarbon; | |||
} | } | ||
/********************************************************************* | /********************************************************************* | ||
* Equation for calculating the number of Hydrogens in | |||
* the problem per cubic centimeter, dependent on what | |||
* the user put in for the thickness of the detector. | |||
********************************************************************/ | |||
double numberHydrogenFunction(double thickness, const | double numberHydrogenFunction(double thickness, const | ||
double CUBICCENTIMETERHYDROGEN) | |||
{ | { | ||
double numberHydrogen; | |||
numberHydrogen = CUBICCENTIMETERHYDROGEN; | |||
return numberHydrogen; | |||
} | } | ||
/********************************************************************* | /********************************************************************* | ||
* Requesting the cross section from the Knoll book, and | |||
* then calculating it from barns to centimeters. | |||
********************************************************************/ | |||
double crossSectionCarbonFunction() | double crossSectionCarbonFunction() | ||
{ | { | ||
double crossSectionCarbon; | |||
cout << endl; | |||
cout << "Enter the cross section of Carbon by " | |||
<< "looking in Radiation" << endl | |||
<< "Detection and Measurement by Glenn Knoll, on" | |||
<< " page 535, " << endl | |||
<< "Figure 15-15b (in barns): "; | |||
cin >> crossSectionCarbon; | |||
crosSectionCarbon = crossSectionCarbon * 1e-24; | |||
return crossSectionCarbon; | |||
} | } | ||
/ | /******************************************************************* | ||
* Equation for efficiency according to equation 15-8b | * Equation for efficiency according to equation 15-8b | ||
* from Radiation Detection and Measurement | * from Radiation Detection and Measurement | ||
* by Glenn Knoll | * by Glenn Knoll | ||
******************************************************************/ | ******************************************************************/ | ||
void efficiencyFunction(double numberHydrogen, double | |||
numberCarbon, double crossSectionHydrogen, | |||
double crossSectionCarbon, double | |||
thickness) | |||
{ | |||
double efficiency; | |||
double nHcH = numberHydrogen * crossSectionHydrogen; | |||
double nCcC = numberCarbon * crossSectionCarbon; | |||
efficiency = (((nHcH) / (nHcH + nCcC)) * (1-exp(-(nHcH | |||
+ nCcC | + nCcC) | ||
* thickness) | * thickness))); | ||
if(efficiency <= 0) | |||
{ | |||
efficiency = 0; | |||
} | |||
cout.precision(4); | |||
cout << endl; | |||
cout << "Therefore, the efficiency of our " | |||
<< "system is: " << efficiency *100 << "%" << endl; | |||
cout << endl; | |||
return; | |||
} | |||
Latest revision as of 16:58, 13 May 2008
#include <iostream> #include <cmath> using namespace std;
double crossSectionHydrogenFunction();
double numberCarbonFunction(double thickness,
const double CUBICCENTIMETERCARBON);
double numberHydrogenFunction(double thickness,
const double CUBICCENTIMETERHYDROGEN);
double crossSectionCarbonFunction();
void efficiencyFunction(double numberHydrogen, double numberCarbon,
double crossSectionHydrogen, double crossSectionCarbon,
double thickness);
/************************************************************************
* This program is to find the
* efficiency of a neutron detector.
************************************************************************/
double main()
{
double neutronEnergy;
double numberHydrogen;
double numberCarbon;
double crossSectionHydrogen;
double crossSectionCarbon;
double thickness;
const double CUBICCENTIMETERCARBON = 5.23e22;
const double CUBICCENTIMETERHYDROGEN = 4.74e22;
cout << endl; cout << "Enter thickness of detector (in centimeters): "; cin >> thickness;
crossSectionHydrogen = crossSectionHydrogenFunction();
numberCarbon = numberCarbonFunction(thickness,
CUBICCENTIMETERCARBON);
numberHydrogen = numberHydrogenFunction(thickness,
CUBICCENTIMETERHYDROGEN);
crossSectionCarbon = crossSectionCarbonFunction();
efficiencyFunction(numberHydrogen, numberCarbon,
crossSectionHydrogen, crossSectionCarbon,
thickness);
}
/**********************************************************************
* Equation for cross section of hydrogen according to
* equation 15-9 from Radiation Detection and Measurement
* by Glenn Knoll
*********************************************************************/
double crossSectionHydrogenFunction()
{
double neutronEnergy;
double crossSectionHydrogen;
cout << endl; cout << "Enter neutron energy (in MeV): "; cin >> neutronEnergy;
crossSectionHydrogen = ((4.83e-24 / sqrt(neutronEnergy))
- .578e-24);
return crossSectionHydrogen; }
/**********************************************************************
* Equation for calculating the number of Carbons in
* the problem per cubic centimeter, dependent on what
* the user put in for the thickness of the detector.
*********************************************************************/
double numberCarbonFunction(double thickness, const
double CUBICCENTIMETERCARBON)
{
double numberCarbon;
numberCarbon = CUBICCENTIMETERCARBON; return numberCarbon; }
/*********************************************************************
* Equation for calculating the number of Hydrogens in
* the problem per cubic centimeter, dependent on what
* the user put in for the thickness of the detector.
********************************************************************/
double numberHydrogenFunction(double thickness, const
double CUBICCENTIMETERHYDROGEN)
{
double numberHydrogen;
numberHydrogen = CUBICCENTIMETERHYDROGEN; return numberHydrogen; }
/*********************************************************************
* Requesting the cross section from the Knoll book, and
* then calculating it from barns to centimeters.
********************************************************************/
double crossSectionCarbonFunction()
{
double crossSectionCarbon;
cout << endl;
cout << "Enter the cross section of Carbon by "
<< "looking in Radiation" << endl
<< "Detection and Measurement by Glenn Knoll, on"
<< " page 535, " << endl
<< "Figure 15-15b (in barns): ";
cin >> crossSectionCarbon;
crosSectionCarbon = crossSectionCarbon * 1e-24;
return crossSectionCarbon; }
/*******************************************************************
* Equation for efficiency according to equation 15-8b
* from Radiation Detection and Measurement
* by Glenn Knoll
******************************************************************/
void efficiencyFunction(double numberHydrogen, double
numberCarbon, double crossSectionHydrogen,
double crossSectionCarbon, double
thickness)
{
double efficiency;
double nHcH = numberHydrogen * crossSectionHydrogen;
double nCcC = numberCarbon * crossSectionCarbon;
efficiency = (((nHcH) / (nHcH + nCcC)) * (1-exp(-(nHcH
+ nCcC)
* thickness)));
if(efficiency <= 0)
{
efficiency = 0;
}
cout.precision(4);
cout << endl;
cout << "Therefore, the efficiency of our "
<< "system is: " << efficiency *100 << "%" << endl;
cout << endl;
return;
}