Difference between revisions of "C program for neutron efficiency"
Jump to navigation
Jump to search
| (5 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); | |
| − | } | + | } |
/********************************************************************** | /********************************************************************** | ||
| Line 65: | Line 58: | ||
cin >> neutronEnergy; | cin >> neutronEnergy; | ||
| − | crossSectionHydrogen = ((4. | + | crossSectionHydrogen = ((4.83e-24 / sqrt(neutronEnergy)) |
- .578e-24); | - .578e-24); | ||
| Line 81: | Line 74: | ||
double numberCarbon; | double numberCarbon; | ||
| − | numberCarbon = | + | numberCarbon = CUBICCENTIMETERCARBON; |
return numberCarbon; | return numberCarbon; | ||
} | } | ||
| Line 95: | Line 88: | ||
double numberHydrogen; | double numberHydrogen; | ||
| − | numberHydrogen = | + | numberHydrogen = CUBICCENTIMETERHYDROGEN; |
return numberHydrogen; | return numberHydrogen; | ||
} | } | ||
| Line 112: | Line 105: | ||
<< "Detection and Measurement by Glenn Knoll, on" | << "Detection and Measurement by Glenn Knoll, on" | ||
<< " page 535, " << endl | << " page 535, " << endl | ||
| − | << "Figure 15-15b (in | + | << "Figure 15-15b (in barns): "; |
cin >> crossSectionCarbon; | cin >> crossSectionCarbon; | ||
| + | crosSectionCarbon = crossSectionCarbon * 1e-24; | ||
return crossSectionCarbon; | 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 | ||
| Line 133: | Line 127: | ||
efficiency = (((nHcH) / (nHcH + nCcC)) * (1-exp(-(nHcH | efficiency = (((nHcH) / (nHcH + nCcC)) * (1-exp(-(nHcH | ||
| − | + nCcC | + | + nCcC) |
| − | * thickness) | + | * thickness))); |
| + | if(efficiency <= 0) | ||
| + | { | ||
| + | efficiency = 0; | ||
| + | } | ||
cout.precision(4); | cout.precision(4); | ||
cout << endl; | cout << endl; | ||
cout << "Therefore, the efficiency of our " | cout << "Therefore, the efficiency of our " | ||
| − | << "system is: " << efficiency << "%" << endl; | + | << "system is: " << efficiency *100 << "%" << endl; |
cout << endl; | cout << endl; | ||
return; | 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;
}