mirror of
https://github.com/gwm17/PunchTable.git
synced 2024-11-22 10:18:51 -05:00
Small bugfixes in energy loss table and test. Added testonly flag in main
This commit is contained in:
parent
b2539965c5
commit
9bb87e999e
|
@ -76,23 +76,23 @@ namespace PunchTable {
|
|||
m_isValid = true;
|
||||
}
|
||||
|
||||
double ElossTable::GetEnergyLoss(double finalEnergy, double theta_incident)
|
||||
double ElossTable::GetEnergyLoss(double thetaIncident, double finalEnergy)
|
||||
{
|
||||
theta_incident /= s_deg2rad;
|
||||
thetaIncident /= s_deg2rad;
|
||||
if(!m_isValid)
|
||||
{
|
||||
std::cerr<<"ElossTable not initialized at GetEnergyLoss()"<<std::endl;
|
||||
return 0.0;
|
||||
}
|
||||
else if(theta_incident < m_thetaMin || theta_incident > m_thetaMax)
|
||||
else if(thetaIncident < m_thetaMin || thetaIncident > m_thetaMax)
|
||||
{
|
||||
std::cerr<<"Theta incident outside of range of calculated values for ElossTable::GetEnergyLoss()"<<std::endl;
|
||||
return 0.0;
|
||||
}
|
||||
|
||||
int theta_bin = (theta_incident - m_thetaMin)/m_thetaStep;
|
||||
int theta_bin = (thetaIncident - m_thetaMin)/m_thetaStep;
|
||||
|
||||
//std::cout<<"theta bin: "<<theta_bin<<" theta_inc: "<<theta_incident<<std::endl;
|
||||
//std::cout<<"theta bin: "<<theta_bin<<" theta_inc: "<<thetaIncident<<std::endl;
|
||||
|
||||
if(m_splines[theta_bin].IsValid())
|
||||
{
|
||||
|
|
|
@ -21,7 +21,7 @@ namespace PunchTable {
|
|||
~ElossTable();
|
||||
|
||||
void ReadFile(const std::string& filename);
|
||||
double GetEnergyLoss(double finalEnergy, double theta_incident);
|
||||
double GetEnergyLoss(double thetaIncident, double finalEnergy);
|
||||
|
||||
inline const bool IsValid() const { return m_isValid; }
|
||||
|
||||
|
|
|
@ -270,7 +270,7 @@ namespace PunchTable {
|
|||
flush_count++;
|
||||
std::cout<<"\rPercent of data generated: "<<flush_count*flush_percent*100.0<<"%"<<std::flush;
|
||||
}
|
||||
ke = params.maxKE - j*params.stepKE;
|
||||
ke = params.minKE + j*params.stepKE;
|
||||
projectile.T = ke/projectile.A;
|
||||
eloss = 0.0;
|
||||
for(size_t k=0; k<nlayers; k++)
|
||||
|
|
15
src/main.cpp
15
src/main.cpp
|
@ -14,6 +14,7 @@ int main(int argc, char** argv)
|
|||
{
|
||||
|
||||
bool test = true;
|
||||
bool testonly = false;
|
||||
if(argc != 2)
|
||||
{
|
||||
std::cerr<<"PunchTable requires an input file!"<<std::endl;
|
||||
|
@ -22,21 +23,21 @@ int main(int argc, char** argv)
|
|||
|
||||
PunchTable::TableParameters params = PunchTable::GetTableParameters(argv[1]);
|
||||
|
||||
if(params.tableType == "PunchTable")
|
||||
if(!testonly && params.tableType == "PunchTable")
|
||||
{
|
||||
PunchTable::GeneratePunchTable(params);
|
||||
}
|
||||
else if(params.tableType == "ElossTable")
|
||||
else if(!testonly && params.tableType == "ElossTable")
|
||||
{
|
||||
PunchTable::GenerateElossTable(params);
|
||||
}
|
||||
else
|
||||
else if(!testonly)
|
||||
{
|
||||
std::cerr<<"Unrecognized table type "<<params.tableType<<std::endl;
|
||||
return 1;
|
||||
}
|
||||
|
||||
if(test && params.tableType == "PunchTable")
|
||||
if((test || testonly) && params.tableType == "PunchTable")
|
||||
{
|
||||
std::cout<<std::endl;
|
||||
std::cout<<"-------------Testing---------"<<std::endl;
|
||||
|
@ -51,17 +52,17 @@ int main(int argc, char** argv)
|
|||
<<" and the deposited energy is "<<ke_dep<<" MeV"<<std::endl;
|
||||
std::cout<<"-----------------------------"<<std::endl;
|
||||
}
|
||||
if(test && params.tableType == "ElossTable")
|
||||
if((test || testonly) && params.tableType == "ElossTable")
|
||||
{
|
||||
std::cout<<std::endl;
|
||||
std::cout<<"-------------Testing---------"<<std::endl;
|
||||
PunchTable::ElossTable table(params.filename);
|
||||
std::cout<<"Is the table valid? "<<table.IsValid()<<std::endl;
|
||||
double ke_test = 14.5; //MeV
|
||||
double ke_test = 0.5; //MeV
|
||||
double theta_test = 35.5*M_PI/180.0;
|
||||
double eloss = table.GetEnergyLoss(theta_test, ke_test);
|
||||
std::cout<<"For a "<<PunchTable::MassLookup::GetInstance().FindSymbol(params.projectileZ, params.projectileA)<<" with kinetic energy "<<ke_test<<" MeV "
|
||||
<<"calculate an energy loss of "<<eloss<<" MeV. Please compare to favorite tool (LISE, SRIM, etc.)"<<std::endl;
|
||||
<<"calculate an energy loss of "<<eloss<<" MeV for an incident angle of "<<theta_test*180.0/M_PI<<" degrees. Please compare to favorite tool (LISE, SRIM, etc.)"<<std::endl;
|
||||
std::cout<<"-----------------------------"<<std::endl;
|
||||
}
|
||||
|
||||
|
|
Loading…
Reference in New Issue
Block a user