#include "ElossTable.h" #include #include #include namespace PunchTable { ElossTable::ElossTable() : m_isValid(false) { } ElossTable::ElossTable(const std::string& filename) : m_isValid(false) { ReadFile(filename); } ElossTable::~ElossTable() {} void ElossTable::ReadFile(const std::string& filename) { std::ifstream input(filename); if(!input.is_open()) { std::cerr<<"Unable to open table file named "< energyLoss, energyFinal; input>>junk>>junk>>m_projectileString; input>>junk>>junk; while(input>>junk) { if(junk == "---------------------------------") break; input>>junk; m_materialString += junk; input>>junk; } input>>junk>>m_thetaMin>>junk>>m_thetaMax>>junk>>m_thetaStep; std::getline(input, junk); std::getline(input, junk); std::getline(input, junk); std::getline(input, junk); while(input>>junk) { if(junk == "begin_theta") { energyLoss.clear(); energyFinal.clear(); input>>theta; while(input>>junk) { if(junk == "end_theta") break; energyFinal.push_back(std::stod(junk)); input>>value; energyLoss.push_back(value); } if(!energyFinal.empty()) m_splines.emplace_back(energyFinal, energyLoss); else m_splines.emplace_back(); } else { std::cerr<<"Unexpected expression found when reading punch table: "< m_thetaMax) { //std::cerr<<"Theta incident "<