- return (0);
- case O_HELP:
- case '?':
- phm2helix_usage(argv[0]);
- return (0);
- default:
- phm2helix_usage(argv[0]);
- return (1);
- } // end of switch
- } // end of while loop
-
- if (optind + 4 != argc) {
- phm2helix_usage(argv[0]);
- return (1);
- }
-
- opt_outfile = argv[optind];
- opt_ndet = strtol(argv[optind+1], &endptr, 10);
- endstr = argv[optind+1] + strlen(argv[optind+1]);
- if (endptr != endstr) {
- std::cerr << "Error setting --ndet to " << argv[optind+1] << std::endl;
- phm2helix_usage(argv[0]);
- return (1);
- }
- opt_nview = strtol(argv[optind+2], &endptr, 10);
- endstr = argv[optind+2] + strlen(argv[optind+2]);
- if (endptr != endstr) {
- std::cerr << "Error setting --nview to " << argv[optind+2] << std::endl;
- phm2helix_usage(argv[0]);
- return (1);
- }
- opt_PhmProg = argv[optind+3];
-
- if (opt_rotangle < 0) {
- if (optGeometryName.compare ("parallel") == 0)
- opt_rotangle = 0.5;
- else
- opt_rotangle = 1.0;
- }
-
- std::ostringstream desc;
- desc << "phm2helix: NDet=" << opt_ndet
- << ", Nview=" << opt_nview
- << ", NRay=" << opt_nray
- << ", RotAngle=" << opt_rotangle
- << ", OffsetView =" << opt_offsetview
- << ", Geometry=" << optGeometryName
- << ", PhantomProg=" << opt_PhmProg
- << ", PhmFileName=" << opt_PhmFileName;
- if (opt_desc.length()) {
- desc << ": " << opt_desc;
- }
- opt_desc = desc.str();
-
- opt_rotangle *= TWOPI;
-
- int stat;
- char extcommand[100];
- if(opt_debug != 0)
- std::cout << opt_PhmProg << " " << 0 << " " << opt_nview << " " << opt_PhmFileName << std::endl;
- //extcommand << opt_PhmProg << " " << 0 << " " << opt_nview << " " << opt_PhmFileName ;
-
- sprintf(extcommand, "%s %d %d %s", opt_PhmProg.c_str(), 0, opt_nview, opt_PhmFileName.c_str() );
-
- stat = system( extcommand );
- if (stat != 0 )
- std::cerr << "Error executing external phantom program " << opt_PhmProg << " with command " << extcommand << std::endl;
-
- phm.createFromFile (opt_PhmFileName.c_str());
- remove(opt_PhmFileName.c_str());
-
- Scanner scanner (phm, optGeometryName.c_str(), opt_ndet, opt_nview,
- opt_offsetview, opt_nray, opt_rotangle, dOptFocalLength,
- dOptCenterDetectorLength, dOptViewRatio, dOptScanRatio);
- if (scanner.fail()) {
- std::cout << "Scanner Creation Error: " << scanner.failMessage()
- << std::endl;
- return (1);
- }
-
- Projections pjGlobal(scanner);
-
-
- for( int iView = 0; iView < opt_nview; iView++ ){
- if(opt_debug != 0)
- std::cout << opt_PhmProg << " " << iView << " " << opt_nview << " " << opt_PhmFileName << std::endl;
- //extcommand << opt_PhmProg << " " << iView << " " << opt_nview << " " << opt_PhmFileName ;
-
- sprintf(extcommand, "%s %d %d %s", opt_PhmProg.c_str(), iView, opt_nview, opt_PhmFileName.c_str() );
- stat = system( extcommand );
-
- if (stat != 0 )
- std::cerr << "Error executing external phantom program " << opt_PhmProg << " with command " << extcommand << std::endl;
- Phantom phmtmp;
- phmtmp.createFromFile (opt_PhmFileName.c_str());
-
- scanner.collectProjections (pjGlobal, phmtmp, iView,
- 1, scanner.offsetView(), true, opt_trace);
- remove(opt_PhmFileName.c_str());
- }
-
-
- pjGlobal.setCalcTime (timerProgram.timerEnd());
- pjGlobal.setRemark (opt_desc);
- pjGlobal.write (opt_outfile);
- if (opt_verbose) {
- phm.print (std::cout);
- std::cout << std::endl;
- std::ostringstream os;
- pjGlobal.printScanInfo (os);
- std::cout << os.str() << std::endl;
- std::cout << " Remark: " << pjGlobal.remark() << std::endl;
- std::cout << "Run time: " << pjGlobal.calcTime() << " seconds\n";
- }
-
- return (0);
+ return (0);
+ case O_HELP:
+ case '?':
+ phm2helix_usage(argv[0]);
+ return (0);
+ default:
+ phm2helix_usage(argv[0]);
+ return (1);
+ } // end of switch
+ } // end of while loop
+
+ if (optind + 4 != argc) {
+ phm2helix_usage(argv[0]);
+ return (1);
+ }
+
+ opt_outfile = argv[optind];
+ opt_ndet = strtol(argv[optind+1], &endptr, 10);
+ endstr = argv[optind+1] + strlen(argv[optind+1]);
+ if (endptr != endstr) {
+ std::cerr << "Error setting --ndet to " << argv[optind+1] << std::endl;
+ phm2helix_usage(argv[0]);
+ return (1);
+ }
+ opt_nview = strtol(argv[optind+2], &endptr, 10);
+ endstr = argv[optind+2] + strlen(argv[optind+2]);
+ if (endptr != endstr) {
+ std::cerr << "Error setting --nview to " << argv[optind+2] << std::endl;
+ phm2helix_usage(argv[0]);
+ return (1);
+ }
+ opt_PhmProg = argv[optind+3];
+
+ if (opt_rotangle < 0) {
+ if (optGeometryName.compare ("parallel") == 0)
+ opt_rotangle = 0.5;
+ else
+ opt_rotangle = 1.0;
+ }
+
+ std::ostringstream desc;
+ desc << "phm2helix: NDet=" << opt_ndet
+ << ", Nview=" << opt_nview
+ << ", NRay=" << opt_nray
+ << ", RotAngle=" << opt_rotangle
+ << ", OffsetView =" << opt_offsetview
+ << ", Geometry=" << optGeometryName
+ << ", PhantomProg=" << opt_PhmProg
+ << ", PhmFileName=" << opt_PhmFileName;
+ if (opt_desc.length()) {
+ desc << ": " << opt_desc;
+ }
+ opt_desc = desc.str();
+
+ opt_rotangle *= TWOPI;
+
+ int stat;
+ char extcommand[100];
+ if(opt_debug != 0)
+ std::cout << opt_PhmProg << " " << 0 << " " << opt_nview << " " << opt_PhmFileName << std::endl;
+ //extcommand << opt_PhmProg << " " << 0 << " " << opt_nview << " " << opt_PhmFileName ;
+
+ sprintf(extcommand, "%s %d %d %s", opt_PhmProg.c_str(), 0, opt_nview, opt_PhmFileName.c_str() );
+
+ stat = system( extcommand );
+ if (stat != 0 )
+ std::cerr << "Error executing external phantom program " << opt_PhmProg << " with command " << extcommand << std::endl;
+
+ phm.createFromFile (opt_PhmFileName.c_str());
+ remove(opt_PhmFileName.c_str());
+
+ Scanner scanner (phm, optGeometryName.c_str(), opt_ndet, opt_nview,
+ opt_offsetview, opt_nray, opt_rotangle, dOptFocalLength,
+ dOptCenterDetectorLength, dOptViewRatio, dOptScanRatio);
+ if (scanner.fail()) {
+ std::cout << "Scanner Creation Error: " << scanner.failMessage()
+ << std::endl;
+ return (1);
+ }
+
+ Projections pjGlobal(scanner);
+
+
+ for( int iView = 0; iView < opt_nview; iView++ ){
+ if(opt_debug != 0)
+ std::cout << opt_PhmProg << " " << iView << " " << opt_nview << " " << opt_PhmFileName << std::endl;
+ //extcommand << opt_PhmProg << " " << iView << " " << opt_nview << " " << opt_PhmFileName ;
+
+ sprintf(extcommand, "%s %d %d %s",
+ opt_PhmProg.c_str(), iView, opt_nview,
+ opt_PhmFileName.c_str() );
+ stat = system( extcommand );
+
+ if (stat != 0 )
+ std::cerr << "Error executing external phantom program " << opt_PhmProg << " with command " << extcommand << std::endl;
+ Phantom phmtmp;
+ phmtmp.createFromFile (opt_PhmFileName.c_str());
+
+ scanner.collectProjections (pjGlobal, phmtmp, iView,
+ 1, scanner.offsetView(), true, opt_trace);
+ remove(opt_PhmFileName.c_str());
+ }
+
+
+ pjGlobal.setCalcTime (timerProgram.timerEnd());
+ pjGlobal.setRemark (opt_desc);
+ pjGlobal.write (opt_outfile);
+ if (opt_verbose) {
+ phm.print (std::cout);
+ std::cout << std::endl;
+ std::ostringstream os;
+ pjGlobal.printScanInfo (os);
+ std::cout << os.str() << std::endl;
+ std::cout << " Remark: " << pjGlobal.remark() << std::endl;
+ std::cout << "Run time: " << pjGlobal.calcTime() << " seconds\n";
+ }
+
+ return (0);