package edu.stanford.rsl.conrad.physics;
import edu.stanford.rsl.conrad.fitting.LinearFunction;
public class Constants {
/** fine struct const (unitless) */
public static double ALPHA = 7.297351E-3;
/** classical elec radius (cm) */
public static double RE = 2.8179E-13;
/** electron rest mass (keV) */
public static double MoC2 = 511.003;
/** charge on an electron (C) */
public static double E_CHG = 1.6021892E-19;
/** electrons per mAs */
public static double EpMAS = 6.24146E15;
/** Avogadro's number (/mol) */
public static double Av = 6.02252E23;
/** Coul/kg/R for air */
public static double C_kg_R = 2.580E-4;
/** work function for air (eV) */
public static double W_air = 33.97;
/** atomic number, tungsten */
public static double W_Z = 74.0;
/** atomic weight, tungsten (g/mol) */
public static double W_A = 183.85;
/** tungsten mass density (g/cm3) */
public static double W_mdensity = 19.3;
/** tungsten K-edge (keV) */
public static double W_K = 69.5;
/**
* tungsten K-alpha 1 line
*/
public static double W_Ka1 = 59.32;
/** tungsten K-alpha 2 line */
public static double W_Ka2 = 57.98;
/** tungsten K-beta 1 line */
public static double W_Kb1 = 67.2;
/**
* tungsten K-beta 2 line<br>
* incorrectly 67.1 in Tucker paper */
public static double W_Kb2 = 69.1;
/**
* tungsten K-alpha 1 line<br>
* fluorescent yield
*/
public static double W_Ka1_f = 0.45;
/**
* tungsten K-alpha 2 line<br>
* fluorescent yield
*/
public static double W_Ka2_f = 0.2592;
/**
* tungsten K-beta 1 line<br>
* fluorescent yield
*/
public static double W_Kb1_f = 0.1521;
/**
* tungsten K-beta 2 line<br>
* fluorescent yield
*/
public static double W_Kb2_f = 0.0387;
/** atomic number, Rhenium */
public static double Re_Z = 75.0;
/** atomic weight, Rhenium (g/mol) */
public static double Re_A = 186.2;
/** Rhenium mass density (g/cm3) */
public static double Re_mdensity =20.53;
/** Rhenium K-edge (keV) */
public static double Re_K = 71.5;
/**
* Rhenium K-alpha 1 line
*/
public static double Re_Ka1 = 61.14;
/**
* Rhenium K-alpha 2 line
*/
public static double Re_Ka2 = 59.72;
/**
* Rhenium K-beta 1 line
*/
public static double Re_Kb1 = 69.2;
/**
* Rhenium K-beta 2 line
*/
public static double Re_Kb2 = 71.2;
/**
* Rhenium K-alpha 1 line<br>
* fluorescent yield
*/
public static double Re_Ka1_f= 0.04988;
/**
* Rhenium K-alpha 2 line<br>
* fluorescent yield
*/
public static double Re_Ka2_f= 0.02883;
/**
* Rhenium K-beta 1 line<br>
* fluorescent yield
*/
public static double Re_Kb1_f= 0.0173;
/**
* Rhenium K-beta 2 line<br>
* fluorescent yield
*/
public static double Re_Kb2_f= 0.00429;
/** atomic number, molybdenum */
public static double Mo_Z = 42.0;
/** atomic weight, molybdenum (g/mol) */
public static double Mo_A = 95.94;
/** molybdenum mass density */
public static double Mo_mdensity = 10.22;
/** molybdenum K-edge (keV) */
public static double Mo_K = 19.965;
/** molybdenum K-alpha 1 line */
public static double Mo_Ka1 = 17.48;
/** molybdenum K-alpha 2 line */
public static double Mo_Ka2 = 17.37;
/** molybdenum K-beta 1 line */
public static double Mo_Kb1 = 19.61;
/** molybdenum K-beta 2 line */
public static double Mo_Kb2 = 19.96;
/**
* molybdenum K-alpha 1 line<br>
* fluorescent yield
*/
public static double Mo_Ka1_f= 0.5599;
/**
* molybdenum K-alpha 2 line<br>
* fluorescent yield
*/
public static double Mo_Ka2_f= 0.2833;
/**
* molybdenum K-beta 1 line<br>
* fluorescent yield
*/
public static double Mo_Kb1_f= 0.1344;
/**
* molybdenum K-beta 2 line<br>
* fluorescent yield
*/
public static double Mo_Kb2_f= 0.0224;
/** aluminum mass density 2.70 (g/cm3) */
public static double Al_mdensity =2.70;
/** soft bone mass density 1.20 (g/cm3) */
public static double Bone_mdensity = 1.20;
/** Cortical bone (ICRU-44) mass density 1.920E+00 (g/cm3) */
public static double CorticalBone_mdensity = 1.920E+00;
/** B-100 Bone-Equivalent Plastic mass density 1.450E+00 (g/cm3) */
public static double SoftBone_mdensity = 1.450E+00;
/** soft tissue mass density 1.00 (g/cm3) */
public static double SoftTissue_mdensity = 1.00;
/** water mass density 1.00 (g/cm3) */
public static double Water_mdensity=1.00;
/** air mass density (g/cm3) */
public static double AIR_mdensity=0.001213;
/** oil mass density 0.85 (g/cm3) */
public static double OIL_mdensity=0.85;
/** Titanium mass density 4.540E+00 (g/cm3) */
public static double Ti_mdensity=4.540E+00;
/** Gold mass density 1.932E+01 (g/cm3) */
public static double Au_mdensity=1.932E+01;
/** Lexan mass density 1.25 (g/cm3) */
public static double LEXAN_mdensity=1.25;
/** Lucite mass density 1.19 (g/cm3) */
public static double Lucite_mdensity=1.19;
/** Teflon mass density 2.250E+00 (g/cm3) */
public static double TEFLON_mdensity=2.250E+00;
/** Polystyrene mass density 1.06E+00 (g/cm3) */
public static double Polystyrene_mdensity=1.06E+00;
/** Pyrex glass mass density 2.23 (g/cm3) */
public static double PYREX_mdensity=2.23;
/** CsI mass density 4.51 (g/cm3) */
public static double CsI_mdensity=4.51;
/**
* CT Values according to CatPhan Manual
*/
public static double AirCTValue = -1000;
public static double WaterCTValue = 0;
public static double AcrylicCTValue = 120;
public static double SoftTissueCTValue = 35;
public static double SoftBoneCTValue = 300;
public static double TeflonCTValue = 990;
public static double PolystyreneCTValue = -35;
public static double LuciteCTNumber = 110;
public static double PDS2BaseMaterialCTNumber = 292.306;
public static double PlasticineMaterialCTNumber = 252.3;
public static double QrmHA1100MaterialCTNumber = 1661.417;
public static double LegCylinder = 68.962;
/** W target fraction Tungsten */
public static double TF_W = 0.9;
/** W target fraction Rhenium */
public static double TF_Re = 0.1;
/**
* Empirical coefficients that are used to ensure agreement between
* calculated and experimental exposure values for both the bremsstrahlung
* and characteristic components are defined here. The experimental
* values are those published by Tucker et al. Small changes in these
* coefficients were required to the Tucker values, which are included
* in the square brackets.
*/
/**
* Bremsstrahlung<BR>
* photons/electron [3.685E-2] (3.90e-2 for R2)
*/
public static double A0_W = 3.6E-2;
/**
* Bremsstrahlung<BR>
* photons/(electron keV) [2.900E-5] (2.30e-5 for R2)
*/
public static double A1_W = 2.9E-5;
/**
* Bremsstrahlung<BR>
* photons/electron [3.033E-2] (3.0e-2)
*/
public static double A0_Mo = 2.3E-2;
/**
* Bremsstrahlung<BR>
* photons/(electron keV) [-7.494E-5] (-6.2e-5)
*/
public static double A1_Mo =-0.E-5;
/**
* Characteristic<br>
* photons/electron [1.349E-3]
*/
public static double Ak_W = 1.30E-3;
/**
* Characteristic<br>
* dimensionless exponent [1.648]
*/
public static double nk_W = 1.65;
/**
* Characteristic<br>
* photons/electron [7.773E-4] (7.90e-4)
*/
public static double Ak_Mo = 6.9E-4;
/**
* Characteristic<br>
* dimensionless exponent [1.613] (1.59)
*/
public static double nk_Mo = 1.613;
/**
* Mass attenuation coefficients for Aluminium
*/
public static double [] aAl = { .172651e0, .223596e0, -.703254e0, .842642e0, -.564110e0, .237632e0, -.431417e-1, .461017e-2, -.234452e-3};
public static double [] aWl = { .000000e0, -.170740e2, .672096e2, -.109599e3, .969173e2, -.489856e2, .147314e2, -.239704e1, .162248e0};
public static double [] aWh = { .645476e0, -.670778e1, .391826e2, -.121589e3, .221639e3, -.234715e3, .148981e3, -.485430e2, .553248e1};
public static double [] aMol= { .000000e0, -.952203e2, .192429e3, -.163398e3, .755826e2, -.204435e2, .328347e1, -.288511e0, .106862e-1};
public static double [] aMoh= { .213590e0, -.495334e0, .290085e1, -.863362e1, .145314e2, -.134362e2, .841471e1, -.272723e1, .347591e0};
public static double [] aRel= { .000000e0, .120729e2, -.473461e2, .801273e2, -.740837e2, .417432e2, -.136463e2, .245235e1, -.186391e0};
public static double [] aReh= { -.824620e-1, .428168e1, -.309579e2, .127384e3, -.341862e3, .481770e3, -.428135e3, .208457e3, -.431927e2};
public static double [] aOIL= { .217381e0, .170909e0, -.571149e0, .616428e0, -.374410e0, .139485e0, -.307085e-1, .384552e-2, -.205047e-3};
public static double [] aLEX= { .199252e0, .169128e0, -.557894e0, .611422e0, -.377486e0, .143073e0, -.316256e-1, .400862e-2, -.216943e-3};
public static double [] aPYR= { .181903e0, .203691e0, -.651756e0, .764128e0, -.503556e0, .206070e0, -.397921e-1, .451715e-2, -.237949e-3};
public static double [] aAIR= { .186903e0, .172942e0, -.562708e0, .627935e0, -.395378e0, .153723e0, -.337658e-1, .432223e-2, -.238894e-3};
/**
* converts from CT values to mass density
* @param ctValue
* @return the density estimate
*/
public static double computeMassDensity(double ctValue){
double [] ctValues = {AirCTValue, SoftBoneCTValue, WaterCTValue, TeflonCTValue, PolystyreneCTValue};
double [] massDensities = {AIR_mdensity, SoftBone_mdensity, Water_mdensity, TEFLON_mdensity, Polystyrene_mdensity};
LinearFunction func = new LinearFunction();
func.fitToPoints(ctValues, massDensities);
return func.evaluate(ctValue);
}
/**
* converts from mass density to CT value
* @param massDensity
* @return the CT estimate
*/
public static double computeCTValue(double massDensity){
double [] ctValues = {AirCTValue, SoftBoneCTValue, WaterCTValue, TeflonCTValue, PolystyreneCTValue};
double [] massDensities = {AIR_mdensity, SoftBone_mdensity, Water_mdensity, TEFLON_mdensity, Polystyrene_mdensity};
LinearFunction func = new LinearFunction();
func.fitToPoints(massDensities, ctValues);
return func.evaluate(massDensity);
}
}
/*
* Copyright (C) 2010-2014 Andreas Maier
* CONRAD is developed as an Open Source project under the GNU General Public License (GPL).
*/