18 #define DEBUG_FITS_FILES_x
23 #include <sys/types.h>
28 #include "midiGlobal.h"
30 #include "memoryHandling.h"
33 #include "diagnostics.h"
34 #include "errorHandling.h"
35 #include "fileHandling.h"
36 #include "midiFitsClassification.h"
37 #include "midiGlobal.h"
66 void classifyFitsFiles (
71 cpl_parameterlist *parlist,
72 cpl_frameset *frameset)
78 const char routine[] =
"classifyFitsFiles";
79 int stringLength, fileNumInList, batchNum = 0, fileCount, localError;
80 FILE *inFitsClassifiedPtr=NULL, *inFitsTempPtr=NULL;
81 char *inFitsTemp=NULL, *stringTemp=NULL,
82 *fileNameStr=NULL, *classification=NULL;
83 ImageFormat *format=NULL;
87 if (diagnostic > 4) cpl_msg_info(cpl_func,
"Invoking routine '%s' \n", routine);
88 if (diagnostic > 4) fprintf (filePtr,
"Invoking routine '%s' \n", routine);
90 cpl_msg_info(cpl_func,
"\nClassifying input FITS files \n");
91 cpl_msg_info(cpl_func,
"---------------------------- \n");
92 fprintf (filePtr,
"\nClassifying input FITS files \n");
93 fprintf (filePtr,
"---------------------------- \n");
100 fileNameStr = (
char *) calloc (MAX_STRING_LENGTH,
sizeof (
char));
101 classification = (
char *) calloc (MAX_STRING_LENGTH,
sizeof (
char));
102 inFitsTemp = (
char *) calloc (MAX_STRING_LENGTH,
sizeof (
char));
103 stringTemp = (
char *) calloc (MAX_STRING_LENGTH,
sizeof (
char));
104 format = callocImageFormat ();
107 if ((inFitsClassifiedPtr = fopen (fileNames->inFitsClassified,
"r")) == NULL)
109 midiReportWarning (filePtr, routine, __FILE__, __LINE__,
"Cannot open input FITS file list");
113 free (classification);
115 freeImageFormat (format);
119 #ifdef DEBUG_FITS_FILES
121 while (fgets (stringTemp, MAX_STRING_LENGTH, inFitsClassifiedPtr) != NULL)
124 sscanf (stringTemp,
"%s%s", fileNameStr, classification);
125 getFitsClassification (fileNumInList, filePtr, fileNameStr, format, error);
132 stringLength = strlen (fileNames->inFitsClassified);
133 strncpy (inFitsTemp, fileNames->inFitsClassified, stringLength-4);
134 strcat (inFitsTemp,
"Buffer.log");
135 if ((inFitsTempPtr = fopen (inFitsTemp,
"w")) == NULL)
137 midiReportWarning (filePtr, routine, __FILE__, __LINE__,
"Cannot open a temporary batch file");
139 fclose (inFitsClassifiedPtr);
142 free (classification);
144 freeImageFormat (format);
150 while (fgets (stringTemp, MAX_STRING_LENGTH, inFitsClassifiedPtr) != NULL)
153 sprintf (classification,
"%s",
"");
154 sscanf (stringTemp,
"%s%s", fileNameStr, classification);
160 getFitsClassification (fileNumInList, filePtr, fileNameStr, format, &localError);
161 if (localError)
continue;
164 if (((strcmp (format->obsCatg,
"CALIB") == 0) ||
165 (strcmp (format->obsCatg,
"SCIENCE") == 0)) &&
166 ((strcmp (format->obsTech,
"INTERFEROMETRY") == 0) ||
167 (strcmp (format->obsTech,
"IMAGE,WINDOW,CHOPNOD") == 0)) &&
168 ((strcmp (format->obsType,
"TRACK,OBJECT,DISPERSED") == 0) ||
169 (strcmp (format->obsType,
"TRACK,OBJECT,DISPERSED,SCIPHOT") == 0) ||
171 (strcmp (format->obsType,
"FRINGE_TRACK,OBJECT,FOURIER") == 0) ||
172 (strcmp (format->obsType,
"FRINGE_TRACK,OBJECT,FOURIER,SCI_PHOT") == 0) ||
174 (strcmp (format->obsType,
"PHOTOMETRY,OBJECT,SCIPHOT") == 0) ||
175 (strcmp (format->obsType,
"PHOTOMETRY,OBJECT") == 0)) &&
176 (format->fileNumInTemplate == 1))
178 if (options->drsFrg) getFringeTrackBatch (format, inFitsTempPtr, inFitsClassifiedPtr,
179 fileNameStr, classification, filePtr, &batchNum, &fileNumInList, error, parlist, frameset);
181 else if (((strcmp (format->obsCatg,
"CALIB") == 0) ||
182 (strcmp (format->obsCatg,
"SCIENCE") == 0)) &&
183 ((strcmp (format->obsTech,
"IMAGE,WINDOW") == 0) ||
184 (strcmp (format->obsType,
"COARSE,OBJECT") == 0)))
186 if (options->drsAcq) getAcquisitionBatch (inFitsTempPtr, fileNameStr, classification,
187 filePtr, &batchNum, error);
189 else if ((strcmp (format->obsCatg,
"CALIB") == 0) &&
190 ((strcmp (format->obsTech,
"IMAGE") == 0) ||
191 (strcmp (format->obsTech,
"SPECTRUM") == 0)) &&
192 (strcmp (format->obsType,
"FLAT") == 0) &&
193 (format->fileNumInTemplate == 1))
195 if (options->tecLin) getDetLinBatch (format, inFitsTempPtr, inFitsClassifiedPtr, fileNameStr,
196 classification, filePtr, &batchNum, &fileNumInList, error);
198 else if ((strcmp (format->obsCatg,
"CALIB") == 0) &&
199 (strcmp (format->obsTech,
"IMAGE") == 0) &&
200 (strcmp (format->obsType,
"BIAS") == 0) &&
201 (format->fileNumInTemplate == 1))
203 if (options->tecRon) getDetRonBatch (format, inFitsTempPtr, inFitsClassifiedPtr, fileNameStr,
204 classification, filePtr, &batchNum, &fileNumInList, error);
206 else if ((strcmp (format->obsCatg,
"CALIB") == 0) &&
207 (strcmp (format->obsTech,
"SPECTRUM") == 0) &&
208 (strcmp (format->obsType,
"WAVE") == 0) &&
209 (format->fileNumInTemplate == 1))
211 if (options->tecTrn) getDspTrnBatch (format, inFitsTempPtr, inFitsClassifiedPtr, fileNameStr,
212 classification, filePtr, &batchNum, &fileNumInList, error);
214 else if ((strcmp (format->obsCatg,
"CALIB") == 0) &&
215 (strcmp (format->obsTech,
"IMAGE") == 0) &&
216 (strcmp (format->obsType,
"FMTCHCK") == 0) &&
217 (format->fileNumInTemplate == 1))
219 if (options->tecPix) getRefPixBatch (format, inFitsTempPtr, inFitsClassifiedPtr, fileNameStr,
220 classification, filePtr, &batchNum, &fileNumInList, error);
222 else if ((strcmp (format->obsCatg,
"CALIB") == 0) &&
223 (strcmp (format->obsTech,
"SPECTRUM") == 0) &&
224 (strcmp (format->obsType,
"WAVE,SPECTEMPL") == 0) &&
225 (format->fileNumInTemplate == 1))
227 if (options->tecWav) getWavCalBatch (format, inFitsTempPtr, inFitsClassifiedPtr, fileNameStr,
228 classification, filePtr, &batchNum, &fileNumInList, error);
237 if (inFitsTempPtr) fclose (inFitsTempPtr);
238 if (inFitsClassifiedPtr)
240 fclose (inFitsClassifiedPtr);
241 inFitsClassifiedPtr = NULL;
243 if ((inFitsTempPtr = fopen (inFitsTemp,
"r")) == NULL)
245 midiReportWarning (filePtr, routine, __FILE__, __LINE__,
"Cannot open input FITS file list for reading");
251 if (fscanf (inFitsTempPtr,
"%s\n", stringTemp) == EOF)
253 if (options->drsFrg || options->drsAcq || options->tecRon || options->tecLin ||
254 options->tecTrn || options->tecPix || options->tecWav)
257 sprintf (midiMessage,
"%s\n\t %s\n\t\t %s\n\t\t %s",
258 "Cannot find a complete set of FITS files in the given list or directory.",
259 "Check the following log files:", fileNames->inFitsClassified, inFitsTemp);
260 midiReportWarning (filePtr, routine, __FILE__, __LINE__, midiMessage);
265 midiReportInfo (midiReportPtr, routine, __FILE__, __LINE__,
"No Batch Classification was requested");
270 rewind (inFitsTempPtr);
271 if ((inFitsClassifiedPtr = fopen (fileNames->inFitsClassified,
"w")) == NULL)
274 midiReportWarning (filePtr, routine, __FILE__, __LINE__,
"Cannot open input FITS file list for writing");
279 while (fgets (stringTemp, MAX_STRING_LENGTH, inFitsTempPtr) != NULL)
285 fprintf (inFitsClassifiedPtr,
"%s", stringTemp);
288 if (strcmp (stringTemp,
"END_OF_BATCH\n") == 0)
290 sprintf (classification,
"%s",
"");
291 sscanf (stringTemp,
"%s%s", fileNameStr, classification);
292 fprintf (inFitsClassifiedPtr,
"%s %s\n", fileNameStr, classification);
299 if (inFitsClassifiedPtr) fclose (inFitsClassifiedPtr);
300 if (inFitsTempPtr) fclose (inFitsTempPtr);
301 if (*error < 2)
remove (inFitsTemp);
304 if (stringTemp) free (stringTemp);
305 if (inFitsTemp) free (inFitsTemp);
306 if (classification) free (classification);
307 if (fileNameStr) free (fileNameStr);
308 if (format) freeImageFormat (format);
326 void getFitsClassification (
337 const char routine[] =
"getFitsClassification";
338 char *stringQfits, *emptyString, *cleanString;
344 if (diagnostic > 4) cpl_msg_info(cpl_func,
"Invoking routine '%s' \n", routine);
345 if (diagnostic > 4) fprintf (reportPtr,
"Invoking routine '%s' \n", routine);
352 if (stat (fileName, &buf) == -1)
354 sprintf (midiMessage,
"Cannot find file ... %s", fileName);
355 midiReportWarning (reportPtr, routine, __FILE__, __LINE__, midiMessage);
359 else if ((qfits_is_fits (fileName)) != 1)
361 sprintf (midiMessage,
"Not a FITS file ... %s", fileName);
362 midiReportWarning (reportPtr, routine, __FILE__, __LINE__, midiMessage);
368 cleanString = (
char *) calloc (MAX_STRING_LENGTH,
sizeof (
char));
369 emptyString = (
char *) calloc (MAX_STRING_LENGTH,
sizeof (
char));
370 strcpy (emptyString,
"UNKNOWN");
373 stringQfits = qfits_query_hdr (fileName,
"HIERARCH ESO DPR CATG");
374 if (stringQfits == NULL) sprintf (format->obsCatg,
"%s", emptyString);
377 cleanUpString (stringQfits, cleanString);
378 sprintf (format->obsCatg,
"%s", cleanString);
382 stringQfits = qfits_query_hdr (fileName,
"HIERARCH ESO DPR TECH");
383 if (stringQfits == NULL) sprintf (format->obsTech,
"%s", emptyString);
386 cleanUpString (stringQfits, cleanString);
387 sprintf (format->obsTech,
"%s", cleanString);
391 stringQfits = qfits_query_hdr (fileName,
"HIERARCH ESO DPR TYPE");
392 if (stringQfits == NULL) sprintf (format->obsType,
"%s", emptyString);
395 cleanUpString (stringQfits, cleanString);
396 sprintf (format->obsType,
"%s", cleanString);
400 stringQfits = qfits_query_hdr (fileName,
"HIERARCH ESO OBS TARG NAME");
401 if (stringQfits == NULL) sprintf (format->targetName,
"%s", emptyString);
404 cleanUpString (stringQfits, cleanString);
405 sprintf (format->targetName,
"%s", cleanString);
409 stringQfits = qfits_query_hdr (fileName,
"HIERARCH ESO TPL START");
410 if (stringQfits == NULL) sprintf (format->tplStart,
"%s", emptyString);
413 cleanUpString (stringQfits, cleanString);
414 sprintf (format->tplStart,
"%s", cleanString);
418 stringQfits = qfits_query_hdr (fileName,
"HIERARCH ESO OBS TPLNO");
419 if (stringQfits == NULL) format->numOfTemplates = unknownNumber;
420 else sscanf (stringQfits,
"%d", &(format->numOfTemplates));
423 stringQfits = qfits_query_hdr (fileName,
"HIERARCH ESO OCS TPL NFILE");
424 if (stringQfits == NULL) format->numOfFilesInTemplate = unknownNumber;
425 else sscanf (stringQfits,
"%d", &(format->numOfFilesInTemplate));
428 stringQfits = qfits_query_hdr (fileName,
"HIERARCH ESO OCS TPL FILENO");
429 if (stringQfits == NULL) format->fileNumInTemplate = unknownNumber;
430 else sscanf (stringQfits,
"%d", &(format->fileNumInTemplate));
433 stringQfits = qfits_query_hdr (fileName,
"HIERARCH ESO TPL EXPNO");
434 if (stringQfits == NULL) format->exposureNumInTemplate = unknownNumber;
435 else sscanf (stringQfits,
"%d", &(format->exposureNumInTemplate));
438 stringQfits = qfits_query_hdr (fileName,
"HIERARCH ESO TPL NEXP");
439 if (stringQfits == NULL) format->numOfExposures = unknownNumber;
440 else sscanf (stringQfits,
"%d", &(format->numOfExposures));
443 stringQfits = qfits_query_hdr (fileName,
"HIERARCH ESO OCS EXPO FILENO");
444 if (stringQfits == NULL) format->fileNumInExposure = unknownNumber;
445 else sscanf (stringQfits,
"%d", &(format->fileNumInExposure));
448 stringQfits = qfits_query_hdr (fileName,
"HIERARCH ESO TPL NAME");
449 if (stringQfits == NULL) sprintf (format->tplName,
"%s", emptyString);
452 cleanUpString (stringQfits, cleanString);
453 sprintf (format->tplName,
"%s", cleanString);
457 stringQfits = qfits_query_hdr (fileName,
"HIERARCH ESO INS OPT1 ID");
458 if (stringQfits == NULL) sprintf (format->beamCombiner,
"%s", emptyString);
461 cleanUpString (stringQfits, cleanString);
462 sprintf (format->beamCombiner,
"%s", cleanString);
466 stringQfits = qfits_query_ext (fileName,
"HIERARCH ESO INS SHUT ID", 0);
467 if (stringQfits == NULL) sprintf (format->shutterId,
"%s", emptyString);
470 cleanUpString (stringQfits, cleanString);
471 sprintf (format->shutterId,
"%s", cleanString);
476 cpl_msg_info(cpl_func,
"\nfile: %4d\n", fileNum);
477 cpl_msg_info(cpl_func,
"fileName: %s\n", fileName);
478 cpl_msg_info(cpl_func,
"tplName (TPL NAME): %s\n", format->tplName);
479 cpl_msg_info(cpl_func,
"tplStart (TPL START): %s\n", format->tplStart);
480 if (format->fileNumInTemplate == -1)
481 cpl_msg_info(cpl_func,
"fileNumInTemplate (TPL FILENO): UNKNOWN\n");
483 cpl_msg_info(cpl_func,
"fileNumInTemplate (TPL FILENO): %d\n", format->fileNumInTemplate);
485 if (format->numOfFilesInTemplate == -1)
486 cpl_msg_info(cpl_func,
"numOfFilesInTemplate (TPL NFILE): UNKNOWN\n");
488 cpl_msg_info(cpl_func,
"numOfFilesInTemplate (TPL NFILE): %d\n", format->numOfFilesInTemplate);
490 if (format->numOfTemplates)
491 cpl_msg_info(cpl_func,
"numOfTemplates (OBS TPLNO): UNKNOWN\n");
493 cpl_msg_info(cpl_func,
"numOfTemplates (OBS TPLNO): %d\n", format->numOfTemplates);
495 if (format->numOfExposures)
496 cpl_msg_info(cpl_func,
"numOfExposures (TPL NEXP): UNKNOWN\n");
498 cpl_msg_info(cpl_func,
"numOfExposures (TPL NEXP): %d\n", format->numOfExposures);
500 if (format->fileNumInExposure)
501 cpl_msg_info(cpl_func,
"fileNumInExposure (EXPO FILENO): UNKNOWN\n");
503 cpl_msg_info(cpl_func,
"fileNumInExposure (EXPO FILENO): %d\n", format->fileNumInExposure);
505 if (format->exposureNumInTemplate)
506 cpl_msg_info(cpl_func,
"exposureNumInTemplate (TPL EXPNO): UNKNOWN\n");
508 cpl_msg_info(cpl_func,
"exposureNumInTemplate (TPL EXPNO): %d\n", format->exposureNumInTemplate);
509 cpl_msg_info(cpl_func,
"targetName (TARG NAME): %s\n", format->targetName);
510 cpl_msg_info(cpl_func,
"beamCombiner (INS OPT1 ID): %s\n", format->beamCombiner);
511 cpl_msg_info(cpl_func,
"shutterId (INS SHUT ID): %s\n", format->shutterId);
512 cpl_msg_info(cpl_func,
"observationCategory (DPR CATG): %s\n", format->obsCatg);
513 cpl_msg_info(cpl_func,
"observationType (DPR TYPE): %s\n", format->obsType);
514 cpl_msg_info(cpl_func,
"observationTechnique (DPR TECH): %s\n", format->obsTech);
517 fprintf (reportPtr,
"\nfile: %4d\n", fileNum);
518 fprintf (reportPtr,
"fileName: %s\n", fileName);
519 fprintf (reportPtr,
"tplName (TPL NAME): %s\n", format->tplName);
520 fprintf (reportPtr,
"tplStart (TPL START): %s\n", format->tplStart);
521 if (format->fileNumInTemplate == -1)
522 fprintf (reportPtr,
"fileNumInTemplate (TPL FILENO): UNKNOWN\n");
524 fprintf (reportPtr,
"fileNumInTemplate (TPL FILENO): %d\n", format->fileNumInTemplate);
526 if (format->numOfFilesInTemplate == -1)
527 fprintf (reportPtr,
"numOfFilesInTemplate (TPL NFILE): UNKNOWN\n");
529 fprintf (reportPtr,
"numOfFilesInTemplate (TPL NFILE): %d\n", format->numOfFilesInTemplate);
531 if (format->numOfTemplates)
532 fprintf (reportPtr,
"numOfTemplates (OBS TPLNO): UNKNOWN\n");
534 fprintf (reportPtr,
"numOfTemplates (OBS TPLNO): %d\n", format->numOfTemplates);
536 if (format->numOfExposures)
537 fprintf (reportPtr,
"numOfExposures (TPL NEXP): UNKNOWN\n");
539 fprintf (reportPtr,
"numOfExposures (TPL NEXP): %d\n", format->numOfExposures);
541 if (format->fileNumInExposure)
542 fprintf (reportPtr,
"fileNumInExposure (EXPO FILENO): UNKNOWN\n");
544 fprintf (reportPtr,
"fileNumInExposure (EXPO FILENO): %d\n", format->fileNumInExposure);
546 if (format->exposureNumInTemplate)
547 fprintf (reportPtr,
"exposureNumInTemplate (TPL EXPNO): UNKNOWN\n");
549 fprintf (reportPtr,
"exposureNumInTemplate (TPL EXPNO): %d\n", format->exposureNumInTemplate);
550 fprintf (reportPtr,
"targetName (TARG NAME): %s\n", format->targetName);
551 fprintf (reportPtr,
"beamCombiner (INS OPT1 ID): %s\n", format->beamCombiner);
552 fprintf (reportPtr,
"shutterId (INS SHUT ID): %s\n", format->shutterId);
553 fprintf (reportPtr,
"observationCategory (DPR CATG): %s\n", format->obsCatg);
554 fprintf (reportPtr,
"observationType (DPR TYPE): %s\n", format->obsType);
555 fprintf (reportPtr,
"observationTechnique (DPR TECH): %s\n", format->obsTech);
579 void getFringeTrackBatch (
589 cpl_parameterlist *parlist,
590 cpl_frameset *frameset)
596 const char routine[] =
"getFringeTrackBatch";
597 char *inFitsBatchTemp=NULL, *localTplStart=NULL, *stringTemp=NULL, *localTplName=NULL,
598 *localBeamCombiner, *localObsCatg, *localObsTech, *localObsType;
599 FILE *inFitsBatchTempPtr=NULL;
600 int i, numOfInterfFiles, numOfPhotAFiles, numOfPhotBFiles, fileNumInTemplate, numOfEmptyFiles,
601 localFileNumInList, numOfFiles;
602 long inFitsListPosition;
604 cpl_parameter * cur_param;
607 if (diagnostic > 4) cpl_msg_info(cpl_func,
"Invoking routine '%s' \n", routine);
608 if (diagnostic > 4) fprintf(filePtr,
"Invoking routine '%s' \n", routine);
613 numOfInterfFiles = 0;
619 cur_param=cpl_parameterlist_find(parlist,
620 "midi.midi_fringe_all.checkSof");
621 checkSof=cpl_parameter_get_bool(cur_param);
624 inFitsBatchTemp = (
char *) calloc (MAX_STRING_LENGTH,
sizeof (
char));
625 stringTemp = (
char *) calloc (MAX_STRING_LENGTH,
sizeof (
char));
626 localTplStart = (
char *) calloc (MAX_STRING_LENGTH,
sizeof (
char));
627 localTplName = (
char *) calloc (MAX_STRING_LENGTH,
sizeof (
char));
628 localBeamCombiner = (
char *) calloc (MAX_STRING_LENGTH,
sizeof (
char));
629 localObsCatg = (
char *) calloc (MAX_STRING_LENGTH,
sizeof (
char));
630 localObsTech = (
char *) calloc (MAX_STRING_LENGTH,
sizeof (
char));
631 localObsType = (
char *) calloc (MAX_STRING_LENGTH,
sizeof (
char));
634 sprintf (inFitsBatchTemp,
"localBuffer.log");
635 if ((inFitsBatchTempPtr = fopen (inFitsBatchTemp,
"w")) == NULL)
637 midiReportWarning (filePtr, routine, __FILE__, __LINE__,
"Cannot open a batch temporary file");
639 free (inFitsBatchTemp);
640 free (localTplStart);
643 free (localBeamCombiner);
651 fprintf (inFitsBatchTempPtr,
"%s %s\n", fileNameStr, dummyClassif);
652 inFitsListPosition = ftell (inFitsListPtr);
653 localFileNumInList = *fileNumInList;
655 if (strcmp (format->obsTech,
"INTERFEROMETRY") == 0)
657 else if (strcmp (format->shutterId,
"AOPEN") == 0)
659 else if (strcmp (format->shutterId,
"BOPEN") == 0)
662 fileNumInTemplate = format->fileNumInTemplate;
664 sprintf (localTplStart,
"%s", format->tplStart);
665 sprintf (localTplName,
"%s", format->tplName);
666 sprintf (localBeamCombiner,
"%s", format->beamCombiner);
667 sprintf (localObsCatg,
"%s", format->obsCatg);
668 sprintf (localObsTech,
"%s", format->obsTech);
669 sprintf (localObsType,
"%s", format->obsType);
671 sprintf (batchTemplate,
"%s", format->tplName);
674 while (fgets (stringTemp, MAX_STRING_LENGTH, inFitsListPtr) != NULL)
676 sprintf (dummyClassif,
"%s",
"");
677 sscanf (stringTemp,
"%s%s", fileNameStr, dummyClassif);
679 localFileNumInList++;
683 getFitsClassification (localFileNumInList, filePtr, fileNameStr, format, error);
688 if (strcmp (format->tplName, localTplName) != 0 && strcmp (format->tplName,
"UNKNOWN") != 0 )
696 cpl_msg_warning(cpl_func,
"Overruling TPL START homogeneity check");
697 cpl_msg_warning(cpl_func,
"Overruling OCS TPL FILENO homogeneity check");
698 format->fileNumInTemplate=fileNumInTemplate;
699 sprintf (localTplStart,
"%s", format->tplStart);
703 if (!(*error) && ((strcmp (format->obsCatg,
"CALIB") == 0) ||
704 (strcmp (format->obsCatg,
"SCIENCE") == 0)) &&
705 (strcmp (format->obsTech,
"INTERFEROMETRY") == 0) &&
706 ((strcmp (format->obsType,
"TRACK,OBJECT,DISPERSED") == 0) ||
707 (strcmp (format->obsType,
"TRACK,OBJECT,DISPERSED,SCIPHOT") == 0) ||
709 (strcmp (format->obsType,
"FRINGE_TRACK,OBJECT,FOURIER") == 0) ||
710 (strcmp (format->obsType,
"FRINGE_TRACK,OBJECT,FOURIER,SCI_PHOT") == 0) ||
712 (strcmp (format->obsType,
"TRACK,OBJECT,DISPERSED") == 0)) &&
713 (strcmp (format->tplStart, localTplStart) == 0) &&
714 (format->fileNumInTemplate == fileNumInTemplate))
716 fprintf (inFitsBatchTempPtr,
"%s %s\n", fileNameStr, dummyClassif);
719 else if (!(*error) && ((strcmp (format->obsCatg,
"CALIB") == 0) ||
720 (strcmp (format->obsCatg,
"SCIENCE") == 0)) &&
721 (strcmp (format->obsTech,
"IMAGE,WINDOW,CHOPNOD") == 0) &&
722 ((strcmp (format->obsType,
"PHOTOMETRY,OBJECT") == 0) ||
723 (strcmp (format->obsType,
"PHOTOMETRY,OBJECT,SCIPHOT") == 0)) &&
724 (strcmp (format->tplStart, localTplStart) == 0) &&
725 (strcmp (format->shutterId,
"AOPEN") == 0) &&
726 (format->fileNumInTemplate == fileNumInTemplate))
728 fprintf (inFitsBatchTempPtr,
"%s %s\n", fileNameStr, dummyClassif);
731 else if (!(*error) && ((strcmp (format->obsCatg,
"CALIB") == 0) ||
732 (strcmp (format->obsCatg,
"SCIENCE") == 0)) &&
733 (strcmp (format->obsTech,
"IMAGE,WINDOW,CHOPNOD") == 0) &&
734 ((strcmp (format->obsType,
"PHOTOMETRY,OBJECT") == 0) ||
735 (strcmp (format->obsType,
"PHOTOMETRY,OBJECT,SCIPHOT") == 0)) &&
736 (strcmp (format->tplStart, localTplStart) == 0) &&
737 (strcmp (format->shutterId,
"BOPEN") == 0) &&
738 (format->fileNumInTemplate == fileNumInTemplate))
740 fprintf (inFitsBatchTempPtr,
"%s %s\n", fileNameStr, dummyClassif);
743 else if (!(*error) && ((strcmp (format->obsCatg,
"CALIB") == 0) ||
744 (strcmp (format->obsCatg,
"SCIENCE") == 0)) &&
745 (strcmp (format->obsTech,
"OTHER") == 0) &&
746 (strcmp (format->obsType,
"OTHER") == 0) &&
747 (strcmp (format->tplStart, localTplStart) == 0) &&
748 (format->fileNumInTemplate == fileNumInTemplate) &&
749 (numOfEmptyFiles < 1))
751 fprintf (inFitsBatchTempPtr,
"%s %s\n", fileNameStr, dummyClassif);
758 fseek (inFitsListPtr, inFitsListPosition, SEEK_SET);
759 localFileNumInList--;
762 inFitsListPosition = ftell (inFitsListPtr);
764 *fileNumInList = localFileNumInList;
767 if (!endOfTemplate) numOfEmptyFiles = 1;
771 if (((strcmp (localTplName,
"MIDI STARINTF OBS FRINGE") == 0) ||
772 (strcmp (localTplName,
"MIDI STARINTF OBS FRINGE CAL") == 0)) &&
773 (strcmp (localBeamCombiner,
"HIGH_SENS") == 0) &&
774 (strcmp (localObsCatg,
"CALIB") == 0) &&
775 (numOfInterfFiles > 0) && (numOfPhotAFiles > 0) && (numOfPhotBFiles > 0) &&
776 (numOfEmptyFiles == 1) && (numOfPhotAFiles == numOfPhotBFiles))
777 sprintf (batchTemplate,
"%s",
"HIGH_SENS_CALIB");
778 else if (((strcmp (localTplName,
"MIDI STARINTF OBS FRINGE") == 0) ||
779 (strcmp (localTplName,
"MIDI STARINTF OBS FRINGE SCI") == 0)) &&
780 (strcmp (localBeamCombiner,
"HIGH_SENS") == 0) &&
781 (strcmp (localObsCatg,
"SCIENCE") == 0) &&
782 (numOfInterfFiles > 0) && (numOfPhotAFiles > 0) && (numOfPhotBFiles > 0) &&
783 (numOfEmptyFiles == 1) && (numOfPhotAFiles == numOfPhotBFiles))
784 sprintf (batchTemplate,
"%s",
"HIGH_SENS_SCIENCE");
785 else if (((strcmp (localTplName,
"MIDI STARINTF OBS FRINGE") == 0) ||
786 (strcmp (localTplName,
"MIDI STARINTF OBS FRINGE CAL") == 0)) &&
787 (strcmp (localBeamCombiner,
"SCI_PHOT") == 0) &&
788 (strcmp (localObsCatg,
"CALIB") == 0) &&
789 (numOfInterfFiles > 0) && (numOfPhotAFiles+numOfPhotBFiles == 0) && (numOfEmptyFiles == 1))
790 sprintf (batchTemplate,
"%s",
"SCI_PHOT_CALIB");
791 else if (((strcmp (localTplName,
"MIDI STARINTF OBS FRINGE") == 0) ||
792 (strcmp (localTplName,
"MIDI STARINTF OBS FRINGE SCI") == 0)) &&
793 (strcmp (localBeamCombiner,
"SCI_PHOT") == 0) &&
794 (strcmp (localObsCatg,
"SCIENCE") == 0) &&
795 (numOfInterfFiles > 0) && (numOfPhotAFiles+numOfPhotBFiles == 0) && (numOfEmptyFiles == 1))
796 sprintf (batchTemplate,
"%s",
"SCI_PHOT_SCIENCE");
797 else if (((strcmp (localTplName,
"MIDI STARINTF OBS FRINGE") == 0) ||
798 (strcmp (localTplName,
"MIDI STARINTF OBS FRINGE CAL") == 0)) &&
799 (strcmp (localBeamCombiner,
"SCI_PHOT") == 0) &&
800 (numOfInterfFiles == 0) && (numOfPhotAFiles > 0) && (numOfPhotBFiles > 0) &&
801 (numOfEmptyFiles == 1) && (numOfPhotAFiles == numOfPhotBFiles))
802 sprintf (batchTemplate,
"%s",
"SCI_PHOT_KAPPA");
803 else if (((strcmp (localTplName,
"MIDI STARINTF OBS FRINGE") == 0) ||
804 (strcmp (localTplName,
"MIDI STARINTF OBS FRINGE CAL") == 0)) &&
805 (strcmp (localBeamCombiner,
"SCI_PHOT") == 0) &&
806 (numOfInterfFiles > 0) && (numOfPhotAFiles > 0) && (numOfPhotBFiles > 0) &&
807 (numOfEmptyFiles == 1) && (numOfPhotAFiles == numOfPhotBFiles))
809 numOfFiles = numOfInterfFiles + numOfPhotAFiles + numOfPhotBFiles + numOfEmptyFiles;
810 sprintf (batchTemplate,
"%s",
"SCI_PHOT_KAPPA");
816 midiReportWarning (filePtr, routine, __FILE__, __LINE__,
"Unknown Template Configuration:");
817 cpl_msg_info(cpl_func,
" Template Name = %s \n", localTplName);
818 cpl_msg_info(cpl_func,
" Beam Combiner = %s \n", localBeamCombiner);
819 cpl_msg_info(cpl_func,
" Obs. Category = %s \n", localObsCatg);
820 cpl_msg_info(cpl_func,
" Number of Interf files = %d \n", numOfInterfFiles);
821 cpl_msg_info(cpl_func,
" Number of Photom A files = %d \n", numOfPhotAFiles);
822 cpl_msg_info(cpl_func,
" Number of Photom B files = %d \n", numOfPhotBFiles);
823 fprintf (filePtr,
" Template Name = %s \n", localTplName);
824 fprintf (filePtr,
" Beam Combiner = %s \n", localBeamCombiner);
825 fprintf (filePtr,
" Obs. Category = %s \n", localObsCatg);
826 fprintf (filePtr,
" Number of Interf files = %d \n", numOfInterfFiles);
827 fprintf (filePtr,
" Number of Photom A files = %d \n", numOfPhotAFiles);
828 fprintf (filePtr,
" Number of Photom B files = %d \n", numOfPhotBFiles);
830 free (inFitsBatchTemp);
831 free (localTplStart);
834 free (localBeamCombiner);
838 if (inFitsBatchTempPtr)
840 fclose (inFitsBatchTempPtr);
841 inFitsBatchTempPtr = NULL;
847 fclose (inFitsBatchTempPtr);
848 inFitsBatchTempPtr = NULL;
849 if ((inFitsBatchTempPtr = fopen (inFitsBatchTemp,
"r")) == NULL)
851 midiReportWarning (filePtr, routine, __FILE__, __LINE__,
"Cannot open a batch temporary file");
853 free (inFitsBatchTemp);
854 free (localTplStart);
857 free (localBeamCombiner);
865 if ((strcmp (batchTemplate,
"SCI_PHOT_KAPPA") == 0) && (numOfInterfFiles > 0))
868 if (strcmp (localObsCatg,
"CALIB") == 0)
871 cpl_msg_info(cpl_func,
"\nSelected batch %d is %s:\n", (*localBatchNum), batchTemplate);
872 fprintf (filePtr,
"\nSelected batch %d: is %s\n", (*localBatchNum), batchTemplate);
873 fprintf (inFitsTempPtr,
"%s \n", batchTemplate);
874 for (i = 1; i <= numOfFiles; i++)
876 fgets (stringTemp, MAX_STRING_LENGTH, inFitsBatchTempPtr);
877 if (i > numOfInterfFiles)
879 sprintf (dummyClassif,
"%s",
"");
880 sscanf (stringTemp,
"%s%s", fileNameStr, dummyClassif);
881 cpl_msg_info(cpl_func,
"%s %s\n", fileNameStr, dummyClassif);
882 fprintf (filePtr,
"%s %s\n", fileNameStr, dummyClassif);
883 fprintf (inFitsTempPtr,
"%s %s\n", fileNameStr, dummyClassif);
886 cpl_msg_info(cpl_func,
"\n");
887 fprintf (filePtr,
"\n");
891 fprintf (inFitsTempPtr,
"%s\n",
"END_OF_BATCH");
895 if (inFitsBatchTempPtr) rewind (inFitsBatchTempPtr);
897 if (strcmp (localObsCatg,
"CALIB") == 0)
899 cpl_msg_info(cpl_func,
"\nSelected batch %d is SCI_PHOT_CALIB:\n", (*localBatchNum));
900 fprintf (filePtr,
"\nSelected batch %d: is SCI_PHOT_CALIB\n", (*localBatchNum));
901 fprintf (inFitsTempPtr,
"%s \n",
"SCI_PHOT_CALIB");
905 cpl_msg_info(cpl_func,
"\nSelected batch %d is SCI_PHOT_SCIENCE:\n", (*localBatchNum));
906 fprintf (filePtr,
"\nSelected batch %d: is SCI_PHOT_SCIENCE\n", (*localBatchNum));
907 fprintf (inFitsTempPtr,
"%s \n",
"SCI_PHOT_SCIENCE");
909 for (i = 1; i <= numOfFiles; i++)
911 fgets (stringTemp, MAX_STRING_LENGTH, inFitsBatchTempPtr);
912 if (i <= numOfInterfFiles)
914 sprintf (dummyClassif,
"%s",
"");
915 sscanf (stringTemp,
"%s%s", fileNameStr, dummyClassif);
916 cpl_msg_info(cpl_func,
"%s %s\n", fileNameStr, dummyClassif);
917 fprintf (filePtr,
"%s %s\n", fileNameStr, dummyClassif);
918 fprintf (inFitsTempPtr,
"%s %s\n", fileNameStr, dummyClassif);
921 cpl_msg_info(cpl_func,
"\n");
922 fprintf (filePtr,
"\n");
926 fprintf (inFitsTempPtr,
"%s\n",
"END_OF_BATCH");
927 if (inFitsBatchTempPtr)
929 fclose (inFitsBatchTempPtr);
930 inFitsBatchTempPtr = NULL;
932 remove (inFitsBatchTemp);
937 cpl_msg_info(cpl_func,
"\nSelected batch %d is %s:\n", (*localBatchNum), batchTemplate);
938 fprintf (filePtr,
"\nSelected batch %d: is %s\n", (*localBatchNum), batchTemplate);
939 fprintf (inFitsTempPtr,
"%s \n", batchTemplate);
940 while (fgets (stringTemp, MAX_STRING_LENGTH, inFitsBatchTempPtr) != NULL)
942 sprintf (dummyClassif,
"%s",
"");
943 sscanf (stringTemp,
"%s%s", fileNameStr, dummyClassif);
944 cpl_msg_info(cpl_func,
"%s %s\n", fileNameStr, dummyClassif);
945 fprintf (filePtr,
"%s %s\n", fileNameStr, dummyClassif);
946 fprintf (inFitsTempPtr,
"%s %s\n", fileNameStr, dummyClassif);
948 cpl_msg_info(cpl_func,
"\n");
949 fprintf (filePtr,
"\n");
953 fprintf (inFitsTempPtr,
"%s\n",
"END_OF_BATCH");
954 if (inFitsBatchTempPtr)
956 fclose (inFitsBatchTempPtr);
957 inFitsBatchTempPtr = NULL;
959 remove (inFitsBatchTemp);
963 if (inFitsBatchTempPtr)
965 fclose (inFitsBatchTempPtr);
966 inFitsBatchTempPtr = NULL;
968 if (inFitsBatchTemp) free (inFitsBatchTemp);
969 if (localTplStart) free (localTplStart);
970 if (localTplName) free (localTplName);
971 if (stringTemp) free (stringTemp);
972 if (localBeamCombiner) free (localBeamCombiner);
973 if (localObsCatg) free (localObsCatg);
974 if (localObsTech) free (localObsTech);
975 if (localObsType) free (localObsType);
993 void getAcquisitionBatch (
1004 const char routine[] =
"getAcquisitionBatch";
1008 if (diagnostic > 4) cpl_msg_info(cpl_func,
"Invoking routine '%s' \n", routine);
1009 if (diagnostic > 4) fprintf(filePtr,
"Invoking routine '%s' \n", routine);
1015 sprintf (batchTemplate,
"%s",
"ACQ");
1016 cpl_msg_info(cpl_func,
"\nSelected batch %d is %s:\n", (*localBatchNum), batchTemplate);
1017 fprintf (filePtr,
"\nSelected batch %d is %s:\n", (*localBatchNum), batchTemplate);
1018 sprintf (dummyClassif,
"%s",
"");
1019 cpl_msg_info(cpl_func,
"%s %s\n", fileNameStr, dummyClassif);
1020 fprintf (filePtr,
"%s %s\n", fileNameStr, dummyClassif);
1021 fprintf (inFitsTempPtr,
"%s \n", batchTemplate);
1022 fprintf (inFitsTempPtr,
"%s %s\n", fileNameStr, dummyClassif);
1023 fprintf (inFitsTempPtr,
"%s\n",
"END_OF_BATCH");
1024 cpl_msg_info(cpl_func,
"\n");
1025 fprintf (filePtr,
"\n");
1055 void getDetLinBatch (
1056 ImageFormat *format,
1057 FILE *inFitsTempPtr,
1058 FILE *inFitsListPtr,
1069 const char routine[] =
"getDetLinBatch";
1070 char *inFitsBatchTemp=NULL, *localTplStart=NULL, *stringTemp=NULL;
1071 FILE *inFitsBatchTempPtr=NULL;
1072 int numOfDataFiles, fileNumInTemplate, numOfEmptyFiles,
1074 long inFitsListPosition;
1078 if (diagnostic > 4) cpl_msg_info(cpl_func,
"Invoking routine '%s' \n", routine);
1079 if (diagnostic > 4) fprintf(filePtr,
"Invoking routine '%s' \n", routine);
1084 numOfEmptyFiles = 0;
1087 inFitsBatchTemp = (
char *) calloc (MAX_STRING_LENGTH,
sizeof (
char));
1088 localTplStart = (
char *) calloc (MAX_STRING_LENGTH,
sizeof (
char));
1089 stringTemp = (
char *) calloc (MAX_STRING_LENGTH,
sizeof (
char));
1092 sprintf (inFitsBatchTemp,
"localBuffer.log");
1093 if ((inFitsBatchTempPtr = fopen (inFitsBatchTemp,
"w")) == NULL)
1095 midiReportWarning (filePtr, routine, __FILE__, __LINE__,
"Cannot open a batch temporary file");
1097 free (inFitsBatchTemp);
1098 free (localTplStart);
1104 fprintf (inFitsBatchTempPtr,
"%s %s\n", fileNameStr, dummyClassif);
1105 fileNumInTemplate = format->fileNumInTemplate;
1106 sscanf (format->tplStart,
"%s", localTplStart);
1108 localFileNumInList = *fileNumInList;
1109 inFitsListPosition = ftell (inFitsListPtr);
1110 sprintf (batchTemplate,
"%s",
"DETLIN");
1113 while (fgets (stringTemp, MAX_STRING_LENGTH, inFitsListPtr) != NULL)
1115 sprintf (dummyClassif,
"%s",
"");
1116 sscanf (stringTemp,
"%s%s", fileNameStr, dummyClassif);
1118 localFileNumInList++;
1119 fileNumInTemplate++;
1122 getFitsClassification (localFileNumInList, filePtr, fileNameStr, format, error);
1125 if (!(*error) && (strcmp (format->obsCatg,
"CALIB") == 0) &&
1126 ((strcmp (format->obsTech,
"IMAGE") == 0) ||
1127 (strcmp (format->obsTech,
"SPECTRUM") == 0)) &&
1128 (strcmp (format->obsType,
"FLAT") == 0) &&
1129 (strcmp (format->tplStart, localTplStart) == 0) &&
1130 (format->fileNumInTemplate == fileNumInTemplate))
1132 fprintf (inFitsBatchTempPtr,
"%s %s\n", fileNameStr, dummyClassif);
1135 else if (!(*error) && (strcmp (format->obsCatg,
"CALIB") == 0) &&
1136 (strcmp (format->obsTech,
"OTHER") == 0) &&
1137 (strcmp (format->obsType,
"OTHER") == 0) &&
1138 (strcmp (format->tplStart, localTplStart) == 0) &&
1139 (format->fileNumInTemplate == fileNumInTemplate) &&
1140 (numOfEmptyFiles < 1))
1142 fprintf (inFitsBatchTempPtr,
"%s %s\n", fileNameStr, dummyClassif);
1149 fseek (inFitsListPtr, inFitsListPosition, SEEK_SET);
1150 localFileNumInList--;
1153 inFitsListPosition = ftell (inFitsListPtr);
1157 if (!endOfTemplate) numOfEmptyFiles = 1;
1161 if ((numOfDataFiles > 0) && (numOfEmptyFiles == 1))
1164 if (inFitsBatchTempPtr)
1166 fclose (inFitsBatchTempPtr);
1167 inFitsBatchTempPtr = NULL;
1169 if ((inFitsBatchTempPtr = fopen (inFitsBatchTemp,
"r")) == NULL)
1171 midiReportWarning (filePtr, routine, __FILE__, __LINE__,
"Cannot open a batch temporary file");
1173 free (inFitsBatchTemp);
1174 free (localTplStart);
1180 cpl_msg_info(cpl_func,
"\nSelected batch %d is %s:\n", (*localBatchNum), batchTemplate);
1181 fprintf (filePtr,
"\nSelected batch %d: is %s\n", (*localBatchNum), batchTemplate);
1182 fprintf (inFitsTempPtr,
"%s \n", batchTemplate);
1183 while (fgets (stringTemp, MAX_STRING_LENGTH, inFitsBatchTempPtr) != NULL)
1185 sprintf (dummyClassif,
"%s",
"");
1186 sscanf (stringTemp,
"%s%s", fileNameStr, dummyClassif);
1187 cpl_msg_info(cpl_func,
"%s %s\n", fileNameStr, dummyClassif);
1188 fprintf (filePtr,
"%s %s\n", fileNameStr, dummyClassif);
1189 fprintf (inFitsTempPtr,
"%s %s\n", fileNameStr, dummyClassif);
1191 cpl_msg_info(cpl_func,
"\n");
1192 fprintf (filePtr,
"\n");
1196 fprintf (inFitsTempPtr,
"%s\n",
"END_OF_BATCH");
1198 *fileNumInList = localFileNumInList;
1199 if (inFitsBatchTempPtr)
1201 fclose (inFitsBatchTempPtr);
1202 inFitsBatchTempPtr = NULL;
1204 remove (inFitsBatchTemp);
1207 if (inFitsBatchTemp) free (inFitsBatchTemp);
1208 if (localTplStart) free (localTplStart);
1209 if (stringTemp) free (stringTemp);
1237 void getDetRonBatch (
1238 ImageFormat *format,
1239 FILE *inFitsTempPtr,
1240 FILE *inFitsListPtr,
1251 const char routine[] =
"getDetRonBatch";
1252 char *inFitsBatchTemp=NULL, *localTplStart=NULL, *stringTemp=NULL;
1253 FILE *inFitsBatchTempPtr=NULL;
1254 int numOfDataFiles, fileNumInTemplate, numOfEmptyFiles,
1256 long inFitsListPosition;
1260 if (diagnostic > 4) cpl_msg_info(cpl_func,
"Invoking routine '%s' \n", routine);
1261 if (diagnostic > 4) fprintf(filePtr,
"Invoking routine '%s' \n", routine);
1266 numOfEmptyFiles = 0;
1269 inFitsBatchTemp = (
char *) calloc (MAX_STRING_LENGTH,
sizeof (
char));
1270 localTplStart = (
char *) calloc (MAX_STRING_LENGTH,
sizeof (
char));
1271 stringTemp = (
char *) calloc (MAX_STRING_LENGTH,
sizeof (
char));
1274 sprintf (inFitsBatchTemp,
"localBuffer.log");
1275 if ((inFitsBatchTempPtr = fopen (inFitsBatchTemp,
"w")) == NULL)
1277 midiReportWarning (filePtr, routine, __FILE__, __LINE__,
"Cannot open a batch temporary file");
1279 free (inFitsBatchTemp);
1280 free (localTplStart);
1286 fprintf (inFitsBatchTempPtr,
"%s %s\n", fileNameStr, dummyClassif);
1287 fileNumInTemplate = format->fileNumInTemplate;
1288 sscanf (format->tplStart,
"%s", localTplStart);
1290 localFileNumInList = *fileNumInList;
1291 inFitsListPosition = ftell (inFitsListPtr);
1292 sprintf (batchTemplate,
"%s",
"DETRON");
1295 while (fgets (stringTemp, MAX_STRING_LENGTH, inFitsListPtr) != NULL)
1297 sprintf (dummyClassif,
"%s",
"");
1298 sscanf (stringTemp,
"%s%s", fileNameStr, dummyClassif);
1300 localFileNumInList++;
1301 fileNumInTemplate++;
1304 getFitsClassification (localFileNumInList, filePtr, fileNameStr, format, error);
1307 if (!(*error) && (strcmp (format->obsCatg,
"CALIB") == 0) &&
1308 (strcmp (format->obsTech,
"IMAGE") == 0) &&
1309 (strcmp (format->obsType,
"BIAS") == 0) &&
1310 (strcmp (format->tplStart, localTplStart) == 0) &&
1311 (format->fileNumInTemplate == fileNumInTemplate))
1313 fprintf (inFitsBatchTempPtr,
"%s %s\n", fileNameStr, dummyClassif);
1316 else if (!(*error) && (strcmp (format->obsCatg,
"CALIB") == 0) &&
1317 (strcmp (format->obsTech,
"OTHER") == 0) &&
1318 (strcmp (format->obsType,
"OTHER") == 0) &&
1319 (strcmp (format->tplStart, localTplStart) == 0) &&
1320 (format->fileNumInTemplate == fileNumInTemplate) &&
1321 (numOfEmptyFiles < 1))
1323 fprintf (inFitsBatchTempPtr,
"%s %s\n", fileNameStr, dummyClassif);
1330 fseek (inFitsListPtr, inFitsListPosition, SEEK_SET);
1331 localFileNumInList--;
1334 inFitsListPosition = ftell (inFitsListPtr);
1338 if (!endOfTemplate) numOfEmptyFiles = 1;
1342 if ((numOfDataFiles > 0) && (numOfEmptyFiles == 1))
1345 if (inFitsBatchTempPtr)
1347 fclose (inFitsBatchTempPtr);
1348 inFitsBatchTempPtr = NULL;
1350 if ((inFitsBatchTempPtr = fopen (inFitsBatchTemp,
"r")) == NULL)
1352 midiReportWarning (filePtr, routine, __FILE__, __LINE__,
"Cannot open a batch temporary file");
1354 free (inFitsBatchTemp);
1355 free (localTplStart);
1361 cpl_msg_info(cpl_func,
"\nSelected batch %d is %s:\n", (*localBatchNum), batchTemplate);
1362 fprintf (filePtr,
"\nSelected batch %d: is %s\n", (*localBatchNum), batchTemplate);
1363 fprintf (inFitsTempPtr,
"%s \n", batchTemplate);
1364 while (fgets (stringTemp, MAX_STRING_LENGTH, inFitsBatchTempPtr) != NULL)
1366 sprintf (dummyClassif,
"%s",
"");
1367 sscanf (stringTemp,
"%s%s", fileNameStr, dummyClassif);
1368 cpl_msg_info(cpl_func,
"%s %s\n", fileNameStr, dummyClassif);
1369 fprintf (filePtr,
"%s %s\n", fileNameStr, dummyClassif);
1370 fprintf (inFitsTempPtr,
"%s %s\n", fileNameStr, dummyClassif);
1372 cpl_msg_info(cpl_func,
"\n");
1373 fprintf (filePtr,
"\n");
1377 fprintf (inFitsTempPtr,
"%s\n",
"END_OF_BATCH");
1379 *fileNumInList = localFileNumInList;
1380 if (inFitsBatchTempPtr)
1382 fclose (inFitsBatchTempPtr);
1383 inFitsBatchTempPtr = NULL;
1385 remove (inFitsBatchTemp);
1388 if (inFitsBatchTemp) free (inFitsBatchTemp);
1389 if (localTplStart) free (localTplStart);
1390 if (stringTemp) free (stringTemp);
1419 void getDspTrnBatch (
1420 ImageFormat *format,
1421 FILE *inFitsTempPtr,
1422 FILE *inFitsListPtr,
1433 const char routine[] =
"getDspTrnBatch";
1434 char *inFitsBatchTemp=NULL, *localTplStart=NULL, *stringTemp=NULL;
1435 FILE *inFitsBatchTempPtr=NULL;
1436 int numOfDataFiles, fileNumInTemplate, numOfEmptyFiles,
1438 long inFitsListPosition;
1442 if (diagnostic > 4) cpl_msg_info(cpl_func,
"Invoking routine '%s' \n", routine);
1443 if (diagnostic > 4) fprintf(filePtr,
"Invoking routine '%s' \n", routine);
1448 numOfEmptyFiles = 0;
1451 inFitsBatchTemp = (
char *) calloc (MAX_STRING_LENGTH,
sizeof (
char));
1452 localTplStart = (
char *) calloc (MAX_STRING_LENGTH,
sizeof (
char));
1453 stringTemp = (
char *) calloc (MAX_STRING_LENGTH,
sizeof (
char));
1456 sprintf (inFitsBatchTemp,
"localBuffer.log");
1457 if ((inFitsBatchTempPtr = fopen (inFitsBatchTemp,
"w")) == NULL)
1459 midiReportWarning (filePtr, routine, __FILE__, __LINE__,
"Cannot open a batch temporary file");
1461 free (inFitsBatchTemp);
1462 free (localTplStart);
1468 fprintf (inFitsBatchTempPtr,
"%s %s\n", fileNameStr, dummyClassif);
1469 fileNumInTemplate = format->fileNumInTemplate;
1470 sscanf (format->tplStart,
"%s", localTplStart);
1472 localFileNumInList = *fileNumInList;
1473 inFitsListPosition = ftell (inFitsListPtr);
1474 sprintf (batchTemplate,
"%s",
"DSPTRN");
1477 while (fgets (stringTemp, MAX_STRING_LENGTH, inFitsListPtr) != NULL)
1479 sprintf (dummyClassif,
"%s",
"");
1480 sscanf (stringTemp,
"%s%s", fileNameStr, dummyClassif);
1482 localFileNumInList++;
1483 fileNumInTemplate++;
1486 getFitsClassification (localFileNumInList, filePtr, fileNameStr, format, error);
1489 if (!(*error) && (strcmp (format->obsCatg,
"CALIB") == 0) &&
1490 (strcmp (format->obsTech,
"SPECTRUM") == 0) &&
1491 (strcmp (format->obsType,
"WAVE") == 0) &&
1492 (strcmp (format->tplStart, localTplStart) == 0) &&
1493 (format->fileNumInTemplate == fileNumInTemplate))
1495 fprintf (inFitsBatchTempPtr,
"%s %s\n", fileNameStr, dummyClassif);
1498 else if (!(*error) && (strcmp (format->obsCatg,
"CALIB") == 0) &&
1499 (strcmp (format->obsTech,
"OTHER") == 0) &&
1500 (strcmp (format->obsType,
"OTHER") == 0) &&
1501 (strcmp (format->tplStart, localTplStart) == 0) &&
1502 (format->fileNumInTemplate == fileNumInTemplate) &&
1503 (numOfEmptyFiles < 1))
1505 fprintf (inFitsBatchTempPtr,
"%s %s\n", fileNameStr, dummyClassif);
1512 fseek (inFitsListPtr, inFitsListPosition, SEEK_SET);
1513 localFileNumInList--;
1516 inFitsListPosition = ftell (inFitsListPtr);
1520 if (!endOfTemplate) numOfEmptyFiles = 1;
1524 if ((numOfDataFiles > 0) && (numOfEmptyFiles == 1))
1527 if (inFitsBatchTempPtr)
1529 fclose (inFitsBatchTempPtr);
1530 inFitsBatchTempPtr = NULL;
1532 if ((inFitsBatchTempPtr = fopen (inFitsBatchTemp,
"r")) == NULL)
1534 midiReportWarning (filePtr, routine, __FILE__, __LINE__,
"Cannot open a batch temporary file");
1536 free (inFitsBatchTemp);
1537 free (localTplStart);
1543 cpl_msg_info(cpl_func,
"\nSelected batch %d is %s:\n", (*localBatchNum), batchTemplate);
1544 fprintf (filePtr,
"\nSelected batch %d: is %s\n", (*localBatchNum), batchTemplate);
1545 fprintf (inFitsTempPtr,
"%s \n", batchTemplate);
1546 while (fgets (stringTemp, MAX_STRING_LENGTH, inFitsBatchTempPtr) != NULL)
1548 sprintf (dummyClassif,
"%s",
"");
1549 sscanf (stringTemp,
"%s%s", fileNameStr, dummyClassif);
1550 cpl_msg_info(cpl_func,
"%s %s\n", fileNameStr, dummyClassif);
1551 fprintf (filePtr,
"%s %s\n", fileNameStr, dummyClassif);
1552 fprintf (inFitsTempPtr,
"%s %s\n", fileNameStr, dummyClassif);
1554 cpl_msg_info(cpl_func,
"\n");
1555 fprintf (filePtr,
"\n");
1559 fprintf (inFitsTempPtr,
"%s\n",
"END_OF_BATCH");
1561 *fileNumInList = localFileNumInList;
1562 if (inFitsBatchTempPtr)
1564 fclose (inFitsBatchTempPtr);
1565 inFitsBatchTempPtr = NULL;
1567 remove (inFitsBatchTemp);
1570 if (inFitsBatchTemp) free (inFitsBatchTemp);
1571 if (localTplStart) free (localTplStart);
1572 if (stringTemp) free (stringTemp);
1600 void getRefPixBatch (
1601 ImageFormat *format,
1602 FILE *inFitsTempPtr,
1603 FILE *inFitsListPtr,
1614 const char routine[] =
"getRefPixBatch";
1615 char *inFitsBatchTemp=NULL, *localTplStart=NULL, *stringTemp=NULL;
1616 FILE *inFitsBatchTempPtr=NULL;
1617 int numOfDataFiles, fileNumInTemplate, numOfEmptyFiles,
1619 long inFitsListPosition;
1623 if (diagnostic > 4) cpl_msg_info(cpl_func,
"Invoking routine '%s' \n", routine);
1624 if (diagnostic > 4) fprintf(filePtr,
"Invoking routine '%s' \n", routine);
1629 numOfEmptyFiles = 0;
1632 inFitsBatchTemp = (
char *) calloc (MAX_STRING_LENGTH,
sizeof (
char));
1633 localTplStart = (
char *) calloc (MAX_STRING_LENGTH,
sizeof (
char));
1634 stringTemp = (
char *) calloc (MAX_STRING_LENGTH,
sizeof (
char));
1637 sprintf (inFitsBatchTemp,
"localBuffer.log");
1638 if ((inFitsBatchTempPtr = fopen (inFitsBatchTemp,
"w")) == NULL)
1640 midiReportWarning (filePtr, routine, __FILE__, __LINE__,
"Cannot open a batch temporary file");
1642 free (inFitsBatchTemp);
1643 free (localTplStart);
1649 fprintf (inFitsBatchTempPtr,
"%s %s\n", fileNameStr, dummyClassif);
1650 fileNumInTemplate = format->fileNumInTemplate;
1651 sscanf (format->tplStart,
"%s", localTplStart);
1653 localFileNumInList = *fileNumInList;
1654 inFitsListPosition = ftell (inFitsListPtr);
1655 sprintf (batchTemplate,
"%s",
"REFPIX");
1658 while (fgets (stringTemp, MAX_STRING_LENGTH, inFitsListPtr) != NULL)
1660 sprintf (dummyClassif,
"%s",
"");
1661 sscanf (stringTemp,
"%s%s", fileNameStr, dummyClassif);
1663 localFileNumInList++;
1664 fileNumInTemplate++;
1667 getFitsClassification (localFileNumInList, filePtr, fileNameStr, format, error);
1670 if (!(*error) && (strcmp (format->obsCatg,
"CALIB") == 0) &&
1671 (strcmp (format->obsTech,
"IMAGE") == 0) &&
1672 (strcmp (format->obsType,
"FMTCHCK") == 0) &&
1673 (strcmp (format->tplStart, localTplStart) == 0) &&
1674 (format->fileNumInTemplate == fileNumInTemplate))
1676 fprintf (inFitsBatchTempPtr,
"%s %s\n", fileNameStr, dummyClassif);
1679 else if (!(*error) && (strcmp (format->obsCatg,
"CALIB") == 0) &&
1680 (strcmp (format->obsTech,
"OTHER") == 0) &&
1681 (strcmp (format->obsType,
"OTHER") == 0) &&
1682 (strcmp (format->tplStart, localTplStart) == 0) &&
1683 (format->fileNumInTemplate == fileNumInTemplate) &&
1684 (numOfEmptyFiles < 1))
1686 fprintf (inFitsBatchTempPtr,
"%s %s\n", fileNameStr, dummyClassif);
1693 fseek (inFitsListPtr, inFitsListPosition, SEEK_SET);
1694 localFileNumInList--;
1697 inFitsListPosition = ftell (inFitsListPtr);
1701 if (!endOfTemplate) numOfEmptyFiles = 1;
1705 if ((numOfDataFiles > 0) && (numOfEmptyFiles == 1))
1708 if (inFitsBatchTempPtr)
1710 fclose (inFitsBatchTempPtr);
1711 inFitsBatchTempPtr = NULL;
1713 if ((inFitsBatchTempPtr = fopen (inFitsBatchTemp,
"r")) == NULL)
1715 midiReportWarning (filePtr, routine, __FILE__, __LINE__,
"Cannot open a batch temporary file");
1717 free (inFitsBatchTemp);
1718 free (localTplStart);
1724 cpl_msg_info(cpl_func,
"\nSelected batch %d is %s:\n", (*localBatchNum), batchTemplate);
1725 fprintf (filePtr,
"\nSelected batch %d: is %s\n", (*localBatchNum), batchTemplate);
1726 fprintf (inFitsTempPtr,
"%s \n", batchTemplate);
1727 while (fgets (stringTemp, MAX_STRING_LENGTH, inFitsBatchTempPtr) != NULL)
1729 sprintf (dummyClassif,
"%s",
"");
1730 sscanf (stringTemp,
"%s%s", fileNameStr, dummyClassif);
1731 cpl_msg_info(cpl_func,
"%s %s\n", fileNameStr, dummyClassif);
1732 fprintf (filePtr,
"%s %s\n", fileNameStr, dummyClassif);
1733 fprintf (inFitsTempPtr,
"%s %s\n", fileNameStr, dummyClassif);
1735 cpl_msg_info(cpl_func,
"\n");
1736 fprintf (filePtr,
"\n");
1740 fprintf (inFitsTempPtr,
"%s\n",
"END_OF_BATCH");
1742 *fileNumInList = localFileNumInList;
1743 if (inFitsBatchTempPtr)
1745 fclose (inFitsBatchTempPtr);
1746 inFitsBatchTempPtr = NULL;
1748 remove (inFitsBatchTemp);
1751 if (inFitsBatchTemp) free (inFitsBatchTemp);
1752 if (localTplStart) free (localTplStart);
1753 if (stringTemp) free (stringTemp);
1781 void getWavCalBatch (
1782 ImageFormat *format,
1783 FILE *inFitsTempPtr,
1784 FILE *inFitsListPtr,
1795 const char routine[] =
"getWavCalBatch";
1796 char *inFitsBatchTemp=NULL, *localTplStart=NULL, *stringTemp=NULL;
1797 FILE *inFitsBatchTempPtr=NULL;
1798 int numOfDataFiles, fileNumInTemplate, numOfEmptyFiles,
1800 long inFitsListPosition;
1804 if (diagnostic > 4) cpl_msg_info(cpl_func,
"Invoking routine '%s' \n", routine);
1805 if (diagnostic > 4) fprintf(filePtr,
"Invoking routine '%s' \n", routine);
1810 numOfEmptyFiles = 0;
1813 inFitsBatchTemp = (
char *) calloc (MAX_STRING_LENGTH,
sizeof (
char));
1814 localTplStart = (
char *) calloc (MAX_STRING_LENGTH,
sizeof (
char));
1815 stringTemp = (
char *) calloc (MAX_STRING_LENGTH,
sizeof (
char));
1818 sprintf (inFitsBatchTemp,
"localBuffer.log");
1819 if ((inFitsBatchTempPtr = fopen (inFitsBatchTemp,
"w")) == NULL)
1821 midiReportWarning (filePtr, routine, __FILE__, __LINE__,
"Cannot open a batch temporary file");
1823 free (inFitsBatchTemp);
1824 free (localTplStart);
1830 fprintf (inFitsBatchTempPtr,
"%s %s\n", fileNameStr, dummyClassif);
1831 fileNumInTemplate = format->fileNumInTemplate;
1832 sscanf (format->tplStart,
"%s", localTplStart);
1834 localFileNumInList = *fileNumInList;
1835 inFitsListPosition = ftell (inFitsListPtr);
1836 sprintf (batchTemplate,
"%s",
"WAVECAL");
1839 while (fgets (stringTemp, MAX_STRING_LENGTH, inFitsListPtr) != NULL)
1841 sprintf (dummyClassif,
"%s",
"");
1842 sscanf (stringTemp,
"%s%s", fileNameStr, dummyClassif);
1844 localFileNumInList++;
1845 fileNumInTemplate++;
1848 getFitsClassification (localFileNumInList, filePtr, fileNameStr, format, error);
1851 if (!(*error) && (strcmp (format->obsCatg,
"CALIB") == 0) &&
1852 (strcmp (format->obsTech,
"SPECTRUM") == 0) &&
1853 (strcmp (format->obsType,
"WAVE,SPECTEMPL") == 0) &&
1854 (strcmp (format->tplStart, localTplStart) == 0) &&
1855 (format->fileNumInTemplate == fileNumInTemplate))
1857 fprintf (inFitsBatchTempPtr,
"%s %s\n", fileNameStr, dummyClassif);
1860 else if (!(*error) && (strcmp (format->obsCatg,
"CALIB") == 0) &&
1861 (strcmp (format->obsTech,
"OTHER") == 0) &&
1862 (strcmp (format->obsType,
"OTHER") == 0) &&
1863 (strcmp (format->tplStart, localTplStart) == 0) &&
1864 (format->fileNumInTemplate == fileNumInTemplate) &&
1865 (numOfEmptyFiles < 1))
1867 fprintf (inFitsBatchTempPtr,
"%s %s\n", fileNameStr, dummyClassif);
1874 fseek (inFitsListPtr, inFitsListPosition, SEEK_SET);
1875 localFileNumInList--;
1878 inFitsListPosition = ftell (inFitsListPtr);
1882 if (!endOfTemplate) numOfEmptyFiles = 1;
1886 if ((numOfDataFiles > 0) && (numOfEmptyFiles == 1))
1889 if (inFitsBatchTempPtr)
1891 fclose (inFitsBatchTempPtr);
1892 inFitsBatchTempPtr = NULL;
1894 if ((inFitsBatchTempPtr = fopen (inFitsBatchTemp,
"r")) == NULL)
1896 midiReportWarning (filePtr, routine, __FILE__, __LINE__,
"Cannot open a batch temporary file");
1898 free (inFitsBatchTemp);
1899 free (localTplStart);
1905 cpl_msg_info(cpl_func,
"\nSelected batch %d is %s:\n", (*localBatchNum), batchTemplate);
1906 fprintf (filePtr,
"\nSelected batch %d: is %s\n", (*localBatchNum), batchTemplate);
1907 fprintf (inFitsTempPtr,
"%s \n", batchTemplate);
1908 while (fgets (stringTemp, MAX_STRING_LENGTH, inFitsBatchTempPtr) != NULL)
1910 sprintf (dummyClassif,
"%s",
"");
1911 sscanf (stringTemp,
"%s%s", fileNameStr, dummyClassif);
1912 cpl_msg_info(cpl_func,
"%s %s\n", fileNameStr, dummyClassif);
1913 fprintf (filePtr,
"%s %s\n", fileNameStr, dummyClassif);
1914 fprintf (inFitsTempPtr,
"%s %s\n", fileNameStr, dummyClassif);
1916 cpl_msg_info(cpl_func,
"\n");
1917 fprintf (filePtr,
"\n");
1921 fprintf (inFitsTempPtr,
"%s\n",
"END_OF_BATCH");
1923 *fileNumInList = localFileNumInList;
1924 if (inFitsBatchTempPtr)
1926 fclose (inFitsBatchTempPtr);
1927 inFitsBatchTempPtr = NULL;
1929 remove (inFitsBatchTemp);
1932 if (inFitsBatchTemp) free (inFitsBatchTemp);
1933 if (localTplStart) free (localTplStart);
1934 if (stringTemp) free (stringTemp);