Skip to content
Merged
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
69 changes: 24 additions & 45 deletions src/flat_file.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -28,8 +28,6 @@ static const int np = 17; // number precision
static bool read_boolean_string(std::istringstream& ss);
static int process_rad_property(std::istringstream& ss);
static std::string get_boolean_string(bool value);
static bool has_t_vector(const double* t);
static bool has_r_matrix(const double* r);
static bool has_matrix66(const Matrix& r);
static bool has_polynom(const std::vector<double>& p);
static void write_6d_vector(std::ostream& fp, const std::string& label, const double* t);
Expand Down Expand Up @@ -129,17 +127,17 @@ void write_flat_file_trackcpp(std::ostream& fp, const Accelerator& accelerator)
if (e.angle_in != 0) { fp << std::setw(pw) << "angle_in" << e.angle_in << '\n'; }
if (e.angle_out != 0) { fp << std::setw(pw) << "angle_out" << e.angle_out << '\n'; }
if (e.rescale_kicks != 1.0) { fp << std::setw(pw) << "rescale_kicks" << e.rescale_kicks << '\n'; }
if (has_t_vector(e.t_in)) write_6d_vector(fp, "t_in", e.t_in);
if (has_t_vector(e.t_out)) write_6d_vector(fp, "t_out", e.t_out);
if (has_r_matrix(e.r_in)) {
if (e.has_t_in) write_6d_vector(fp, "t_in", e.t_in);
if (e.has_t_out) write_6d_vector(fp, "t_out", e.t_out);
if (e.has_r_in) {
write_6d_vector(fp, "rx|r_in", &e.r_in[6*0]);
write_6d_vector(fp, "px|r_in", &e.r_in[6*1]);
write_6d_vector(fp, "ry|r_in", &e.r_in[6*2]);
write_6d_vector(fp, "py|r_in", &e.r_in[6*3]);
write_6d_vector(fp, "de|r_in", &e.r_in[6*4]);
write_6d_vector(fp, "dl|r_in", &e.r_in[6*5]);
}
if (has_r_matrix(e.r_out)) {
if (e.has_r_out) {
write_6d_vector(fp, "rx|r_out", &e.r_out[6*0]);
write_6d_vector(fp, "px|r_out", &e.r_out[6*1]);
write_6d_vector(fp, "ry|r_out", &e.r_out[6*2]);
Expand Down Expand Up @@ -228,20 +226,20 @@ Status::type read_flat_file_trackcpp(std::istream& fp, Accelerator& accelerator)
if (cmd.compare("angle_in") == 0) { ss >> e.angle_in; continue; }
if (cmd.compare("angle_out") == 0) { ss >> e.angle_out; continue; }
if (cmd.compare("rescale_kicks") == 0) { ss >> e.rescale_kicks; continue; }
if (cmd.compare("t_in") == 0) { for(auto i=0; i<6; ++i) ss >> e.t_in[i]; continue; }
if (cmd.compare("t_out") == 0) { for(auto i=0; i<6; ++i) ss >> e.t_out[i]; continue; }
if (cmd.compare("rx|r_in") == 0) { for(auto i=0; i<6; ++i) ss >> e.r_in[0*6+i]; continue; }
if (cmd.compare("px|r_in") == 0) { for(auto i=0; i<6; ++i) ss >> e.r_in[1*6+i]; continue; }
if (cmd.compare("ry|r_in") == 0) { for(auto i=0; i<6; ++i) ss >> e.r_in[2*6+i]; continue; }
if (cmd.compare("py|r_in") == 0) { for(auto i=0; i<6; ++i) ss >> e.r_in[3*6+i]; continue; }
if (cmd.compare("de|r_in") == 0) { for(auto i=0; i<6; ++i) ss >> e.r_in[4*6+i]; continue; }
if (cmd.compare("dl|r_in") == 0) { for(auto i=0; i<6; ++i) ss >> e.r_in[5*6+i]; continue; }
if (cmd.compare("rx|r_out") == 0) { for(auto i=0; i<6; ++i) ss >> e.r_out[0*6+i]; continue; }
if (cmd.compare("px|r_out") == 0) { for(auto i=0; i<6; ++i) ss >> e.r_out[1*6+i]; continue; }
if (cmd.compare("ry|r_out") == 0) { for(auto i=0; i<6; ++i) ss >> e.r_out[2*6+i]; continue; }
if (cmd.compare("py|r_out") == 0) { for(auto i=0; i<6; ++i) ss >> e.r_out[3*6+i]; continue; }
if (cmd.compare("de|r_out") == 0) { for(auto i=0; i<6; ++i) ss >> e.r_out[4*6+i]; continue; }
if (cmd.compare("dl|r_out") == 0) { for(auto i=0; i<6; ++i) ss >> e.r_out[5*6+i]; continue; }
if (cmd.compare("t_in") == 0) { for(auto i=0; i<6; ++i) ss >> e.t_in[i]; e.reflag_t_in(); continue; }
if (cmd.compare("t_out") == 0) { for(auto i=0; i<6; ++i) ss >> e.t_out[i]; e.reflag_t_out(); continue; }
if (cmd.compare("rx|r_in") == 0) { for(auto i=0; i<6; ++i) ss >> e.r_in[0*6+i]; e.reflag_r_in(); continue; }
if (cmd.compare("px|r_in") == 0) { for(auto i=0; i<6; ++i) ss >> e.r_in[1*6+i]; e.reflag_r_in(); continue; }
if (cmd.compare("ry|r_in") == 0) { for(auto i=0; i<6; ++i) ss >> e.r_in[2*6+i]; e.reflag_r_in(); continue; }
if (cmd.compare("py|r_in") == 0) { for(auto i=0; i<6; ++i) ss >> e.r_in[3*6+i]; e.reflag_r_in(); continue; }
if (cmd.compare("de|r_in") == 0) { for(auto i=0; i<6; ++i) ss >> e.r_in[4*6+i]; e.reflag_r_in(); continue; }
if (cmd.compare("dl|r_in") == 0) { for(auto i=0; i<6; ++i) ss >> e.r_in[5*6+i]; e.reflag_r_in(); continue; }
if (cmd.compare("rx|r_out") == 0) { for(auto i=0; i<6; ++i) ss >> e.r_out[0*6+i]; e.reflag_r_out(); continue; }
if (cmd.compare("px|r_out") == 0) { for(auto i=0; i<6; ++i) ss >> e.r_out[1*6+i]; e.reflag_r_out(); continue; }
if (cmd.compare("ry|r_out") == 0) { for(auto i=0; i<6; ++i) ss >> e.r_out[2*6+i]; e.reflag_r_out(); continue; }
if (cmd.compare("py|r_out") == 0) { for(auto i=0; i<6; ++i) ss >> e.r_out[3*6+i]; e.reflag_r_out(); continue; }
if (cmd.compare("de|r_out") == 0) { for(auto i=0; i<6; ++i) ss >> e.r_out[4*6+i]; e.reflag_r_out(); continue; }
if (cmd.compare("dl|r_out") == 0) { for(auto i=0; i<6; ++i) ss >> e.r_out[5*6+i]; e.reflag_r_out(); continue; }
if (cmd.compare("rx|matrix66") == 0) { for(auto i=0; i<6; ++i) ss >> e.matrix66[0][i]; continue; }
if (cmd.compare("px|matrix66") == 0) { for(auto i=0; i<6; ++i) ss >> e.matrix66[1][i]; continue; }
if (cmd.compare("ry|matrix66") == 0) { for(auto i=0; i<6; ++i) ss >> e.matrix66[2][i]; continue; }
Expand Down Expand Up @@ -395,6 +393,12 @@ static Status::type read_flat_file_tracy(const std::string& filename, Accelerato
e.r_out[2*6+0] = S; e.r_out[2*6+2] = C;
e.r_out[1*6+1] = C; e.r_out[1*6+3] = -S;
e.r_out[3*6+1] = S; e.r_out[3*6+3] = C;

e.reflag_t_in();
e.reflag_t_out();
e.reflag_r_in();
e.reflag_r_out();

}; break;
case FlatFileType::kicktable:
{
Expand Down Expand Up @@ -476,31 +480,6 @@ static std::string get_boolean_string(bool value) {
return "false";
}

static bool has_t_vector(const double* t) {
for (int i=0; i<6; ++i)
if (t[i] != 0)
return true;

return false;
}

static bool has_r_matrix(const double* r) {
const double id[36] = {
1.0, 0.0, 0.0, 0.0, 0.0, 0.0,
0.0, 1.0, 0.0, 0.0, 0.0, 0.0,
0.0, 0.0, 1.0, 0.0, 0.0, 0.0,
0.0, 0.0, 0.0, 1.0, 0.0, 0.0,
0.0, 0.0, 0.0, 0.0, 1.0, 0.0,
0.0, 0.0, 0.0, 0.0, 0.0, 1.0
};

for (int i=0; i<36; ++i)
if (r[i] != id[i])
return true;

return false;
}

static bool has_matrix66(const Matrix& m) {
for (int i=0; i<6; ++i)
for (int j=0; j<6; ++j)
Expand Down
Loading