2 ***********************************************************
3 $SNARK_Header: S N A R K 1 4 - A PICTURE RECONSTRUCTION PROGRAM $
4 $HeadURL: svn://dig.cs.gc.cuny.edu/snark/trunk/src/snark/infile.cpp $
5 $LastChangedRevision: 80 $
6 $Date: 2014-07-01 21:01:54 -0400 (Tue, 01 Jul 2014) $
8 ***********************************************************
22 #include <cmath> // to go
23 #include "consts.h" // to go
30 BOOLEAN InFile_class::GetFormat(BOOLEAN NewLine, CHAR* pictf)
32 if (fscanf(infile, "%s", pictf) != 1)
39 while (((c = fgetc(infile)) != '\n') && (c != EOF))
40 { // added check for EOF. Lajos, Nov 18, 2004
46 void InFile_class::GetComment(CHAR* head)
48 signed CHAR ch; // changed "CHAR" to "signed CHAR". Lajos, Nov 18, 2004
51 fprintf(output, "\n");
53 for (i = 0; i < 80; i++)
55 if (((ch = fgetc(infile)) == '\n') || (ch == EOF))
62 // read the rest of the line if more than 80 characters
63 while ((ch != '\n') && (ch != EOF))
64 { // added check for EOF. Lajos, Nov 18, 2004
71 // READ THE ITERATION FLAG CARD AND ECHO A DECODED VERSION OF IT.
73 void InFile_class::listit(INTEGER* iter)
85 for (i = 0; i < 51; i++)
89 { // if end of line encountered
94 iter[i] = 0; // set to zero
98 iter[i] = nextch - '0'; // convert to digit
108 for (i = 1; i < 51; i++)
118 fprintf(output, "\n iterations ");
120 for (int i = 0; i < n; i++)
122 if ((i != 0) && (i % 10 == 0))
124 fprintf(output, "\n ");
126 fprintf(output, " %3i", list[i] + 1);
132 fprintf(output, "\n last iteration\n");
139 void InFile_class::GetRunOptions()
144 static const INTEGER run_codes[3] =
145 { CHAR2INT('r', 'u', 'n', ' '), CHAR2INT('m', 'o', 'd', 'i'), CHAR2INT('s',
148 tword = getwrd(TRUE, &eol, run_codes, 1);
150 if (tword != run_codes[0])
151 creaer(run_codes[0]);
153 tword = getwrd(FALSE, &eol, &(run_codes[1]), 2);
154 Creacm.modif = (tword == run_codes[1]);
155 Creacm.crt12 = (tword == run_codes[2]);
159 void InFile_class::CreaInCrea()
162 static const INTEGER crea = CHAR2INT('c', 'r', 'e', 'a');
166 // READ ENERGY SPECTRAL DISTRIBUTION
167 ReadEnergySpectralDistribution();
169 // READ OBJECTS MAKING UP THE PHANTOM
172 // GET INFORMATION ABOUT CREATION OF PHANTOM
173 // THIS IS NOT RELEVANT FOR RDPROJ. SO SKIP IN THE CASE OF RDPROJ
174 GetInformationABoutCreationOfPhantom(crea);
176 // READ RAYSUM INFORMATION
177 ReadRaysumInformation();
182 /// original snark does not allow combinig pseudo with RUN options
183 #ifdef SEMINAR_RUN_OPTIONS
184 GetRunOptions(); // !!!! for seminar
189 // READ IN AVERAGING INFORMATION FOR COMPUTING RAYSUMS
191 fprintf(output, "\n this run will generate projection data");
193 ReadIfoForComputionRaysums();
195 // INPUT ENTIRE GEOMETRY DATA
196 ReadGeometryData(crea);
198 // READ NUMBER OF RAYS AND RAY SPACING
199 ReadNumberOfRaysAndRaySpacing(crea);
201 // READ NUMBER OF PROJECTIONS
202 // READ LIST OF PROJECTION ANGLES INTO WORK AREA
203 ReadProjectionAngles(FALSE);
205 // MEASUREMENT STATISTICS -- NOISE AND SCATTER
206 GetMesurementStatistics();
208 // READ BACKGROUND ABSORPTION
209 ReadBackgroundAbsorption();
211 // IS THIS A MODIFY RUN OR DOES IT CREATE A FILE TAPE12 FOR FUTURE
212 fprintf(output, "\n ");
216 void InFile_class::CreaInProj()
219 static const INTEGER proj = CHAR2INT('p', 'r', 'o', 'j');
223 // INPUT ENTIRE GEOMETRY DATA
224 ReadGeometryData(proj);
226 // READ NUMBER OF RAYS AND RAY SPACING
227 ReadNumberOfRaysAndRaySpacing(proj);
229 // READ NUMBER OF PROJECTIONS
230 // READ LIST OF PROJECTION ANGLES INTO WORK AREA
231 ReadProjectionAngles(FALSE);
233 // MEASUREMENT STATISTICS -- NOISE AND SCATTER
234 GetMesurementStatistics();
236 // READ BACKGROUND ABSORPTION
237 ReadBackgroundAbsorption();