173 QFile inputFile(fileName);
174 if (inputFile.open(QIODevice::ReadOnly|QIODevice::Text))
176 QTextStream in(&inputFile);
179 QString line = in.readLine();
180 QStringList list = line.split(QRegularExpression(
"\\s+"));
182 if(list[0].contains(
"#") || list.size() != 11) {
188 one.
time = list[1].toFloat() / 1000.0f;
189 one.
rd[
X] = list[3].toFloat() / 1000.0f;
190 one.
rd[
Y] = list[4].toFloat() / 1000.0f;
191 one.
rd[
Z] = list[5].toFloat() / 1000.0f;
192 one.
Q[
X] = list[7].toFloat() / 1e9f;
193 one.
Q[
Y] = list[8].toFloat() / 1e9f;
194 one.
Q[
Z] = list[9].toFloat() / 1e9f;
195 one.
good = list[10].toFloat() / 100.0f;
201 printf(
"Read %d dipoles in dip format from %s\n",set.
size(),fileName.toUtf8().data());
204 printf(
"Not able to read from: %s\n", fileName.toUtf8().data());
223 if (fileName.isEmpty() || this->size() == 0)
226 if ((out = fopen(fileName.toUtf8().data(),
"w")) == NULL) {
227 printf(fileName.toUtf8().data());
231 for (k = 0, nsave = 0; k < this->
size(); k++) {
232 one = m_qListDips[k];
234 one_out.
dipole = swap_int(1);
236 for (p = 0; p < 3; p++) {
237 one_out.
r0[p] = swap_float(0.0);
238 one_out.
rd[p] = swap_float(one.
rd[p]);
239 one_out.
Q[p] = swap_float(one.
Q[p]);
243 one_out.
khi2 = swap_float(one.
khi2);
244 if (fwrite(&one_out,
sizeof(
bdipEcdRec),1,out) != 1) {
245 printf(
"Failed to write a dipole");
251 if (fclose(out) != 0) {
253 printf(fileName.toUtf8().data());
256 printf(
"Save %d dipoles in bdip format to %s\n",nsave,fileName.toUtf8().data());
262 unlink(fileName.toUtf8().data());
276 if (fileName.isEmpty() || this->size() == 0)
278 if ((out = fopen(fileName.toUtf8().data(),
"w")) == NULL) {
279 printf(fileName.toUtf8().data());
282 fprintf(out,
"# CoordinateSystem \"Head\"\n");
283 fprintf (out,
"# %7s %7s %8s %8s %8s %8s %8s %8s %8s %6s\n",
284 "begin",
"end",
"X (mm)",
"Y (mm)",
"Z (mm)",
"Q(nAm)",
"Qx(nAm)",
"Qy(nAm)",
"Qz(nAm)",
"g/%");
285 for (k = 0, nsave = 0; k < this->
size(); k++) {
286 one = this->m_qListDips[k];
288 fprintf(out,
" %7.1f %7.1f %8.2f %8.2f %8.2f %8.3f %8.3f %8.3f %8.3f %6.1f\n",
290 1000*one.
rd[
X],1000*one.
rd[
Y],1000*one.
rd[
Z],
291 1e9*one.
Q.norm(),1e9*one.
Q[
X],1e9*one.
Q[
Y],1e9*one.
Q[
Z],100.0*one.
good);
295 fprintf(out,
"## Name \"%s dipoles\" Style \"Dipoles\"\n",
"ALL");
296 if (fclose(out) != 0) {
298 printf(fileName.toUtf8().data());
301 printf(
"Save %d dipoles in dip format to %s\n",nsave,fileName.toUtf8().data());
307 unlink(fileName.toUtf8().data());