26 #include "midiGlobal.h"
28 #include "errorHandling.h"
29 #include "fileHandling.h"
30 #include "createProdAcq.h"
55 ImageQuality *acqImage,
61 const char routine[] =
"createAcqProd";
62 qfitsdumper qdAcqImage;
63 int region, stringLength, i, length;
64 char *stringTemp=NULL, *localOutName=NULL;
68 if (diagnostic > 4)cpl_msg_info(cpl_func,
"Invoking routine '%s' \n", routine);
69 if (diagnostic > 4) fprintf(midiReportPtr,
"Invoking routine '%s' \n", routine);
71 cpl_msg_info(cpl_func,
"\nCreating Product files for Image Quality from batch %d \n", batchNumber);
72 cpl_msg_info(cpl_func,
"--------------------------------------------------- \n");
73 fprintf (midiReportPtr,
"\nCreating Product files for Image Quality from batch %d \n", batchNumber);
74 fprintf (midiReportPtr,
"--------------------------------------------------- \n");
80 stringTemp = (
char *) calloc (MAX_STRING_LENGTH,
sizeof (
char));
81 localOutName = (
char *) calloc (MAX_STRING_LENGTH,
sizeof (
char));
84 stringLength = strlen (fileNames->outFitsName);
85 strncpy (stringTemp, fileNames->outFitsName, stringLength-9);
87 length = format->iXWidth * format->iYWidth;
89 for (region = 0; region < format->numOfDetectorRegions; region++)
92 sprintf (localOutName,
"%s_DATA%d.pro.fits", stringTemp, region+1);
95 createAcqPrimHead (region, localOutName, fileNames, format, acqImage, error);
100 midiReportWarning (midiReportPtr, routine, __FILE__, __LINE__,
"Cannot create Primary Header extension");
105 for (i = 0; i < length; i++)
106 acqImage->aveImage[region][i] += 0.0;
109 qdAcqImage.filename = localOutName;
110 qdAcqImage.npix = format->iXWidth * format->iYWidth;
111 qdAcqImage.ptype = PTYPE_FLOAT;
112 qdAcqImage.fbuf = acqImage->aveImage[region];
113 qdAcqImage.out_ptype = BPP_IEEE_FLOAT;
115 qfits_pixdump (&qdAcqImage);
119 createAcqQcLog (fileNames->inFitsName, error);
120 if (*error) midiReportWarning (midiReportPtr, routine, __FILE__, __LINE__,
"Cannot copy keywords to QC log");
123 addProdInfoToAcqQcLog (format, fileNames, acqImage, error);
147 void createAcqPrimHead (
150 MidiFiles *fileNames,
152 ImageQuality *acqImage,
158 const char routine[] =
"createAcqPrimHead";
159 qfits_header *outFitsHeader;
160 FILE *inFitsBatchPtr=NULL, *outFitsPtr;
162 char *textBuff, *stringQfits, *messageBuffer, *currentTime, *cleanString,
163 *stringTemp, *classification, *sWidthX, *sWidthY, *localPipeName=NULL;
170 if (diagnostic > 4)cpl_msg_info(cpl_func,
"Invoking routine '%s' \n", routine);
171 if (diagnostic > 4) fprintf(midiReportPtr,
"Invoking routine '%s' \n", routine);
177 if ((inFitsBatchPtr = fopen (fileNames->inFitsBatch,
"r")) == NULL)
179 midiReportWarning (midiReportPtr, routine, __FILE__, __LINE__,
"Cannot open input FITS file list");
185 textBuff = (
char *) calloc (MAX_STRING_LENGTH,
sizeof (
char));
186 classification = (
char *) calloc (MAX_STRING_LENGTH,
sizeof (
char));
187 stringTemp = (
char *) calloc (MAX_STRING_LENGTH,
sizeof (
char));
188 cleanString = (
char *) calloc (MAX_STRING_LENGTH,
sizeof (
char));
189 messageBuffer = (
char *) calloc (MAX_STRING_LENGTH,
sizeof (
char));
190 currentTime = (
char *) calloc (MIN_STRING_LENGTH,
sizeof (
char));
191 sWidthX = (
char *) calloc (MIN_STRING_LENGTH,
sizeof (
char));
192 sWidthY = (
char *) calloc (MIN_STRING_LENGTH,
sizeof (
char));
193 localPipeName = (
char *) calloc (MAX_STRING_LENGTH,
sizeof (
char));
197 newTime = gmtime (&now);
198 strftime (currentTime, MIN_STRING_LENGTH,
"%a %d %b %Y at %H:%M:%S", newTime);
201 fgets (stringTemp, MAX_STRING_LENGTH, inFitsBatchPtr);
202 sprintf (classification,
"%s",
"");
203 sscanf (stringTemp,
"%s%s", fileNames->inFitsName, classification);
206 outFitsHeader = qfits_header_read (fileNames->inFitsName);
207 if (outFitsHeader == NULL)
210 midiReportWarning (midiReportPtr, routine, __FILE__, __LINE__,
"Cannot load header from the input FITS file");
211 free (messageBuffer);
215 free (classification);
219 free (localPipeName);
224 sprintf (sWidthY,
"%d", size->iYWidth);
225 sprintf (sWidthX,
"%d", size->iXWidth);
228 qfits_header_mod (outFitsHeader,
"BITPIX",
"-32",
"number of bits per pixel");
229 qfits_header_mod (outFitsHeader,
"NAXIS",
"2",
"number of data axes");
230 qfits_header_add (outFitsHeader,
"NAXIS1", sWidthX,
"", NULL);
231 qfits_header_add (outFitsHeader,
"NAXIS2", sWidthY,
"", NULL);
232 qfits_header_mod (outFitsHeader,
"INSTRUME",
"MIDI",
"MIDI Raw Data Display FITS created by DRS pipeline" );
236 stringTemp = (
char *) calloc (MAX_STRING_LENGTH,
sizeof (
char));
237 stringLength = strlen (fileNames->pipeFileName);
238 strncpy (stringTemp, fileNames->pipeFileName, stringLength-7);
239 sprintf (localPipeName,
"%s%d.fits", stringTemp, region+1);
243 qfits_header_add (outFitsHeader,
"HIERARCH ESO PRO TYPE", size->obsType,
"MIDI pipeline product type", NULL);
244 qfits_header_add (outFitsHeader,
"HIERARCH ESO PRO CATG",
"IMAGE_QUALITY",
"Pipeline product category", NULL);
245 qfits_header_add (outFitsHeader,
"HIERARCH ESO PRO ARCFILE", fileNames->archFileName,
"Arcfile name of first raw file", NULL);
246 qfits_header_add (outFitsHeader,
"HIERARCH ESO PRO PIPEDATE", currentTime,
"Pipeline run date",
"");
247 qfits_header_add (outFitsHeader,
"HIERARCH ESO PRO VERSION", MIDI_PIPE_VERSION,
"Pipeline version", NULL);
248 qfits_header_add (outFitsHeader,
"PIPEFILE", localPipeName,
"Pipeline product file name", NULL);
249 qfits_header_add (outFitsHeader,
"HIERARCH ESO PRO DID", MIDI_QC_DIC_VERSION,
"QC dictionary version", NULL);
252 rewind (inFitsBatchPtr);
256 while (fgets (stringTemp, MAX_STRING_LENGTH, inFitsBatchPtr) != NULL)
258 sprintf (classification,
"%s",
"");
259 sscanf (stringTemp,
"%s%s", messageBuffer, classification);
262 if (strcmp (classification,
"") == 0)
264 stringQfits = qfits_query_hdr (messageBuffer,
"HIERARCH ESO DPR CATG");
265 if (stringQfits == NULL)
267 sprintf (classification,
"%s",
"UNKNOWN");
268 midiReportWarning (midiReportPtr, routine, __FILE__, __LINE__,
"Cannot get Observation Category");
272 cleanUpString (stringQfits, cleanString);
273 sprintf (classification,
"%s", cleanString);
276 removePathName (messageBuffer, midiReportPtr);
277 sprintf (textBuff,
"HIERARCH ESO PRO REC1 RAW%d NAME", i);
278 qfits_header_add (outFitsHeader, textBuff, messageBuffer,
"FITS file name",
"");
279 sprintf (textBuff,
"HIERARCH ESO PRO REC1 RAW%d CATG", i++);
280 qfits_header_add (outFitsHeader, textBuff, classification,
"Observation Categoty",
"");
282 fclose (inFitsBatchPtr);
285 sprintf (messageBuffer,
"%0.2f", (acqImage->coordX)[region]);
286 sprintf (textBuff,
"HIERARCH ESO QC ACQ TARX%d", region+1);
287 qfits_header_add (outFitsHeader, textBuff, messageBuffer,
"Target X",
"");
288 sprintf (messageBuffer,
"%0.2f", (acqImage->coordY)[region]);
289 sprintf (textBuff,
"HIERARCH ESO QC ACQ TARY%d", region+1);
290 qfits_header_add (outFitsHeader, textBuff, messageBuffer,
"Target Y",
"");
291 sprintf (messageBuffer,
"%0.2f", (acqImage->sizeX)[region]);
292 sprintf (textBuff,
"HIERARCH ESO QC ACQ TARSIZEX%d", region+1);
293 qfits_header_add (outFitsHeader, textBuff, messageBuffer,
"Target X-Width",
"");
294 sprintf (messageBuffer,
"%0.2f", (acqImage->sizeY)[region]);
295 sprintf (textBuff,
"HIERARCH ESO QC ACQ TARSIZEY%d", region+1);
296 qfits_header_add (outFitsHeader, textBuff, messageBuffer,
"Target Y-Width",
"");
297 sprintf (messageBuffer,
"%0.2f", (acqImage->targetFlux)[region]);
298 sprintf (textBuff,
"HIERARCH ESO QC ACQ TARFLUX%d", region+1);
299 qfits_header_add (outFitsHeader, textBuff, messageBuffer,
"Target Intensity",
"");
303 qfits_header_add (outFitsHeader,
"HIERARCH ESO QC PLACEH1",
"TBD",
"TBD",
"");
304 qfits_header_add (outFitsHeader,
"HIERARCH ESO QC PLACEH2",
"TBD",
"TBD",
"");
305 qfits_header_add (outFitsHeader,
"HIERARCH ESO QC PLACEH3",
"TBD",
"TBD",
"");
306 qfits_header_add (outFitsHeader,
"HIERARCH ESO QC PLACEH4",
"TBD",
"TBD",
"");
307 qfits_header_add (outFitsHeader,
"HIERARCH ESO QC PLACEH5",
"TBD",
"TBD",
"");
308 qfits_header_add (outFitsHeader,
"HIERARCH ESO QC PLACEH6",
"TBD",
"TBD",
"");
309 qfits_header_add (outFitsHeader,
"HIERARCH ESO QC PLACEH7",
"TBD",
"TBD",
"");
310 qfits_header_add (outFitsHeader,
"HIERARCH ESO QC PLACEH8",
"TBD",
"TBD",
"");
311 qfits_header_add (outFitsHeader,
"HIERARCH ESO QC PLACEH9",
"TBD",
"TBD",
"");
314 if (stat (outFitsName, &buf) == 0)
remove (outFitsName);
316 outFitsPtr = fopen (outFitsName,
"w");
320 midiReportWarning (midiReportPtr, routine, __FILE__, __LINE__,
"Cannot create output FITS file");
321 free (messageBuffer);
325 free (classification);
329 free (localPipeName);
333 cpl_msg_info(cpl_func,
"Created Product FITS file: %s \n", outFitsName);
334 fprintf (midiReportPtr,
"Created Product FITS file: %s \n", outFitsName);
337 qfits_header_sort (&outFitsHeader);
338 qfits_header_dump (outFitsHeader, outFitsPtr);
340 qfits_header_destroy (outFitsHeader);
343 free (messageBuffer);
347 free (classification);
351 free (localPipeName);
372 void createAcqQcLog (
380 const char routine[] =
"createAcqQcLog";
381 char *qfitsString, *emptyString, *cleanString;
385 if (diagnostic > 4)cpl_msg_info(cpl_func,
"Invoking routine '%s' \n", routine);
386 if (diagnostic > 4) fprintf(midiReportPtr,
"Invoking routine '%s' \n", routine);
392 emptyString = (
char *) calloc (MIN_STRING_LENGTH,
sizeof (
char));
393 cleanString = (
char *) calloc (MAX_STRING_LENGTH,
sizeof (
char));
396 strcpy (emptyString,
"\"UNKNOWN\"");
399 qfitsString = qfits_query_hdr (inFitsName,
"ARCFILE");
400 if (qfitsString == NULL)
401 fprintf (midiQcLogPtr,
"ARCFILE %s \n", emptyString);
402 else {cleanUpString (qfitsString, cleanString);
403 fprintf (midiQcLogPtr,
"ARCFILE \"%s\" \n", cleanString);}
405 qfitsString = qfits_query_hdr (inFitsName,
"TELESCOP");
406 if (qfitsString == NULL)
407 fprintf (midiQcLogPtr,
"TELESCOP %s \n", emptyString);
408 else {cleanUpString (qfitsString, cleanString);
409 fprintf (midiQcLogPtr,
"TELESCOP \"%s\" \n", cleanString);}
411 qfitsString = qfits_query_hdr (inFitsName,
"INSTRUME");
412 if (qfitsString == NULL)
413 fprintf (midiQcLogPtr,
"INSTRUME %s \n", emptyString);
414 else {cleanUpString (qfitsString, cleanString);
415 fprintf (midiQcLogPtr,
"INSTRUME \"%s\" \n", cleanString);}
417 qfitsString = qfits_query_hdr (inFitsName,
"MJD-OBS");
418 if (qfitsString == NULL)
419 fprintf (midiQcLogPtr,
"MJD-OBS %s \n", emptyString);
420 else {cleanUpString (qfitsString, cleanString);
421 fprintf (midiQcLogPtr,
"MJD-OBS \"%s\" \n", cleanString);}
423 qfitsString = qfits_query_hdr (inFitsName,
"DATE-OBS");
424 if (qfitsString == NULL)
425 fprintf (midiQcLogPtr,
"DATE-OBS %s \n", emptyString);
426 else {cleanUpString (qfitsString, cleanString);
427 fprintf (midiQcLogPtr,
"DATE-OBS \"%s\" \n", cleanString);}
429 qfitsString = qfits_query_hdr (inFitsName,
"UTC");
430 if (qfitsString == NULL)
431 fprintf (midiQcLogPtr,
"UTC %s \n", emptyString);
432 else {cleanUpString (qfitsString, cleanString);
433 fprintf (midiQcLogPtr,
"UTC %s \n", cleanString);}
435 qfitsString = qfits_query_hdr (inFitsName,
"LST");
436 if (qfitsString == NULL)
437 fprintf (midiQcLogPtr,
"LST %s \n", emptyString);
438 else {cleanUpString (qfitsString, cleanString);
439 fprintf (midiQcLogPtr,
"LST %s \n", cleanString);}
441 qfitsString = qfits_query_hdr (inFitsName,
"HIERARCH ESO COU GUID DEC");
442 if (qfitsString == NULL)
443 fprintf (midiQcLogPtr,
"COU.GUID.DEC %s \n", emptyString);
444 else {cleanUpString (qfitsString, cleanString);
445 fprintf (midiQcLogPtr,
"COU.GUID.DEC %s \n", cleanString);}
447 qfitsString = qfits_query_hdr (inFitsName,
"HIERARCH ESO COU GUID RA");
448 if (qfitsString == NULL)
449 fprintf (midiQcLogPtr,
"COU.GUID.RA %s \n", emptyString);
450 else {cleanUpString (qfitsString, cleanString);
451 fprintf (midiQcLogPtr,
"COU.GUID.RA %s \n", cleanString);}
453 qfitsString = qfits_query_hdr (inFitsName,
"HIERARCH ESO COU GUID MAG");
454 if (qfitsString == NULL)
455 fprintf (midiQcLogPtr,
"COU.GUID.MAG %s \n", emptyString);
456 else {cleanUpString (qfitsString, cleanString);
457 fprintf (midiQcLogPtr,
"COU.GUID.MAG %s \n", cleanString);}
459 qfitsString = qfits_query_hdr (inFitsName,
"HIERARCH ESO COU AO1 STREHL_MEAN");
460 if (qfitsString == NULL)
461 fprintf (midiQcLogPtr,
"COU.AO1.STREHL_MEAN %s \n", emptyString);
462 else {cleanUpString (qfitsString, cleanString);
463 fprintf (midiQcLogPtr,
"COU.AO1.STREHL_MEAN %s \n", cleanString);}
465 qfitsString = qfits_query_hdr (inFitsName,
"HIERARCH ESO COU AO2 STREHL_MEAN");
466 if (qfitsString == NULL)
467 fprintf (midiQcLogPtr,
"COU.AO2.STREHL_MEAN %s \n", emptyString);
468 else {cleanUpString (qfitsString, cleanString);
469 fprintf (midiQcLogPtr,
"COU.AO2.STREHL_MEAN %s \n", cleanString);}
471 qfitsString = qfits_query_hdr (inFitsName,
"HIERARCH ESO COU AO1 STREHL_RMS");
472 if (qfitsString == NULL)
473 fprintf (midiQcLogPtr,
"COU.AO1.STREHL_RMS %s \n", emptyString);
474 else {cleanUpString (qfitsString, cleanString);
475 fprintf (midiQcLogPtr,
"COU.AO1.STREHL_RMS %s \n", cleanString);}
477 qfitsString = qfits_query_hdr (inFitsName,
"HIERARCH ESO COU AO2 STREHL_RMS");
478 if (qfitsString == NULL)
479 fprintf (midiQcLogPtr,
"COU.AO2.STREHL_RMS %s \n", emptyString);
480 else {cleanUpString (qfitsString, cleanString);
481 fprintf (midiQcLogPtr,
"COU.AO2.STREHL_RMS %s \n", cleanString);}
483 qfitsString = qfits_query_hdr (inFitsName,
"HIERARCH ESO COU AO1 WFE_MEAN");
484 if (qfitsString == NULL)
485 fprintf (midiQcLogPtr,
"COU.AO1.WFE_MEAN %s \n", emptyString);
486 else {cleanUpString (qfitsString, cleanString);
487 fprintf (midiQcLogPtr,
"COU.AO1.WFE_MEAN %s \n", cleanString);}
489 qfitsString = qfits_query_hdr (inFitsName,
"HIERARCH ESO COU AO2 WFE_MEAN");
490 if (qfitsString == NULL)
491 fprintf (midiQcLogPtr,
"COU.AO2.WFE_MEAN %s \n", emptyString);
492 else {cleanUpString (qfitsString, cleanString);
493 fprintf (midiQcLogPtr,
"COU.AO2.WFE_MEAN %s \n", cleanString);}
495 qfitsString = qfits_query_hdr (inFitsName,
"HIERARCH ESO COU AO1 WFE_RMS");
496 if (qfitsString == NULL)
497 fprintf (midiQcLogPtr,
"COU.AO1.WFE_RMS %s \n", emptyString);
498 else {cleanUpString (qfitsString, cleanString);
499 fprintf (midiQcLogPtr,
"COU.AO1.WFE_RMS %s \n", cleanString);}
501 qfitsString = qfits_query_hdr (inFitsName,
"HIERARCH ESO COU AO2 WFE_RMS");
502 if (qfitsString == NULL)
503 fprintf (midiQcLogPtr,
"COU.AO2.WFE_RMS %s \n", emptyString);
504 else {cleanUpString (qfitsString, cleanString);
505 fprintf (midiQcLogPtr,
"COU.AO2.WFE_RMS %s \n", cleanString);}
507 qfitsString = qfits_query_hdr (inFitsName,
"HIERARCH ESO COU AO1 ENC_MEAN");
508 if (qfitsString == NULL)
509 fprintf (midiQcLogPtr,
"COU.AO1.ENC_MEAN %s \n", emptyString);
510 else {cleanUpString (qfitsString, cleanString);
511 fprintf (midiQcLogPtr,
"COU.AO1.ENC_MEAN %s \n", cleanString);}
513 qfitsString = qfits_query_hdr (inFitsName,
"HIERARCH ESO COU AO2 ENC_MEAN");
514 if (qfitsString == NULL)
515 fprintf (midiQcLogPtr,
"COU.AO2.ENC_MEAN %s \n", emptyString);
516 else {cleanUpString (qfitsString, cleanString);
517 fprintf (midiQcLogPtr,
"COU.AO2.ENC_MEAN %s \n", cleanString);}
519 qfitsString = qfits_query_hdr (inFitsName,
"HIERARCH ESO COU AO1 ENC_RMS");
520 if (qfitsString == NULL)
521 fprintf (midiQcLogPtr,
"COU.AO1.ENC_RMS %s \n", emptyString);
522 else {cleanUpString (qfitsString, cleanString);
523 fprintf (midiQcLogPtr,
"COU.AO1.ENC_RMS %s \n", cleanString);}
525 qfitsString = qfits_query_hdr (inFitsName,
"HIERARCH ESO COU AO2 ENC_RMS");
526 if (qfitsString == NULL)
527 fprintf (midiQcLogPtr,
"COU.AO2.ENC_RMS %s \n", emptyString);
528 else {cleanUpString (qfitsString, cleanString);
529 fprintf (midiQcLogPtr,
"COU.AO2.ENC_RMS %s \n", cleanString);}
531 qfitsString = qfits_query_hdr (inFitsName,
"HIERARCH ESO COU AO1 FWHM_MEAN");
532 if (qfitsString == NULL)
533 fprintf (midiQcLogPtr,
"COU.AO1.FWHM_MEAN %s \n", emptyString);
534 else {cleanUpString (qfitsString, cleanString);
535 fprintf (midiQcLogPtr,
"COU.AO1.FWHM_MEAN %s \n", cleanString);}
537 qfitsString = qfits_query_hdr (inFitsName,
"HIERARCH ESO COU AO2 FWHM_MEAN");
538 if (qfitsString == NULL)
539 fprintf (midiQcLogPtr,
"COU.AO2.FWHM_MEAN %s \n", emptyString);
540 else {cleanUpString (qfitsString, cleanString);
541 fprintf (midiQcLogPtr,
"COU.AO2.FWHM_MEAN %s \n", cleanString);}
543 qfitsString = qfits_query_hdr (inFitsName,
"HIERARCH ESO COU AO1 FWHM_RMS");
544 if (qfitsString == NULL)
545 fprintf (midiQcLogPtr,
"COU.AO1.FWHM_RMS %s \n", emptyString);
546 else {cleanUpString (qfitsString, cleanString);
547 fprintf (midiQcLogPtr,
"COU.AO1.FWHM_RMS %s \n", cleanString);}
549 qfitsString = qfits_query_hdr (inFitsName,
"HIERARCH ESO COU AO2 FWHM_RMS");
550 if (qfitsString == NULL)
551 fprintf (midiQcLogPtr,
"COU.AO2.FWHM_RMS %s \n", emptyString);
552 else {cleanUpString (qfitsString, cleanString);
553 fprintf (midiQcLogPtr,
"COU.AO2.FWHM_RMS %s \n", cleanString);}
555 qfitsString = qfits_query_hdr (inFitsName,
"HIERARCH ESO COU AO1 L0_MEAN");
556 if (qfitsString == NULL)
557 fprintf (midiQcLogPtr,
"COU.AO1.L0_MEAN %s \n", emptyString);
558 else {cleanUpString (qfitsString, cleanString);
559 fprintf (midiQcLogPtr,
"COU.AO1.L0_MEAN %s \n", cleanString);}
561 qfitsString = qfits_query_hdr (inFitsName,
"HIERARCH ESO COU AO2 L0_MEAN");
562 if (qfitsString == NULL)
563 fprintf (midiQcLogPtr,
"COU.AO2.L0_MEAN %s \n", emptyString);
564 else {cleanUpString (qfitsString, cleanString);
565 fprintf (midiQcLogPtr,
"COU.AO2.L0_MEAN %s \n", cleanString);}
567 qfitsString = qfits_query_hdr (inFitsName,
"HIERARCH ESO COU AO1 L0_RMS");
568 if (qfitsString == NULL)
569 fprintf (midiQcLogPtr,
"COU.AO1.L0_RMS %s \n", emptyString);
570 else {cleanUpString (qfitsString, cleanString);
571 fprintf (midiQcLogPtr,
"COU.AO1.L0_RMS %s \n", cleanString);}
573 qfitsString = qfits_query_hdr (inFitsName,
"HIERARCH ESO COU AO2 L0_RMS");
574 if (qfitsString == NULL)
575 fprintf (midiQcLogPtr,
"COU.AO2.L0_RMS %s \n", emptyString);
576 else {cleanUpString (qfitsString, cleanString);
577 fprintf (midiQcLogPtr,
"COU.AO2.L0_RMS %s \n", cleanString);}
579 qfitsString = qfits_query_hdr (inFitsName,
"HIERARCH ESO COU AO1 R0_MEAN");
580 if (qfitsString == NULL)
581 fprintf (midiQcLogPtr,
"COU.AO1.R0_MEAN %s \n", emptyString);
582 else {cleanUpString (qfitsString, cleanString);
583 fprintf (midiQcLogPtr,
"COU.AO1.R0_MEAN %s \n", cleanString);}
585 qfitsString = qfits_query_hdr (inFitsName,
"HIERARCH ESO COU AO2 R0_MEAN");
586 if (qfitsString == NULL)
587 fprintf (midiQcLogPtr,
"COU.AO2.R0_MEAN %s \n", emptyString);
588 else {cleanUpString (qfitsString, cleanString);
589 fprintf (midiQcLogPtr,
"COU.AO2.R0_MEAN %s \n", cleanString);}
591 qfitsString = qfits_query_hdr (inFitsName,
"HIERARCH ESO COU AO1 R0_RMS");
592 if (qfitsString == NULL)
593 fprintf (midiQcLogPtr,
"COU.AO1.R0_RMS %s \n", emptyString);
594 else {cleanUpString (qfitsString, cleanString);
595 fprintf (midiQcLogPtr,
"COU.AO1.R0_RMS %s \n", cleanString);}
597 qfitsString = qfits_query_hdr (inFitsName,
"HIERARCH ESO COU AO2 R0_RMS");
598 if (qfitsString == NULL)
599 fprintf (midiQcLogPtr,
"COU.AO2.R0_RMS %s \n", emptyString);
600 else {cleanUpString (qfitsString, cleanString);
601 fprintf (midiQcLogPtr,
"COU.AO2.R0_RMS %s \n", cleanString);}
603 qfitsString = qfits_query_hdr (inFitsName,
"HIERARCH ESO COU AO1 T0_MEAN");
604 if (qfitsString == NULL)
605 fprintf (midiQcLogPtr,
"COU.AO1.T0_MEAN %s \n", emptyString);
606 else {cleanUpString (qfitsString, cleanString);
607 fprintf (midiQcLogPtr,
"COU.AO1.T0_MEAN %s \n", cleanString);}
609 qfitsString = qfits_query_hdr (inFitsName,
"HIERARCH ESO COU AO2 T0_MEAN");
610 if (qfitsString == NULL)
611 fprintf (midiQcLogPtr,
"COU.AO2.T0_MEAN %s \n", emptyString);
612 else {cleanUpString (qfitsString, cleanString);
613 fprintf (midiQcLogPtr,
"COU.AO2.T0_MEAN %s \n", cleanString);}
615 qfitsString = qfits_query_hdr (inFitsName,
"HIERARCH ESO COU AO1 T0_RMS");
616 if (qfitsString == NULL)
617 fprintf (midiQcLogPtr,
"COU.AO1.T0_RMS %s \n", emptyString);
618 else {cleanUpString (qfitsString, cleanString);
619 fprintf (midiQcLogPtr,
"COU.AO1.T0_RMS %s \n", cleanString);}
621 qfitsString = qfits_query_hdr (inFitsName,
"HIERARCH ESO COU AO2 T0_RMS");
622 if (qfitsString == NULL)
623 fprintf (midiQcLogPtr,
"COU.AO2.T0_RMS %s \n", emptyString);
624 else {cleanUpString (qfitsString, cleanString);
625 fprintf (midiQcLogPtr,
"COU.AO2.T0_RMS %s \n", cleanString);}
627 qfitsString = qfits_query_hdr (inFitsName,
"HIERARCH ESO DET CHIP NX");
628 if (qfitsString == NULL)
629 fprintf (midiQcLogPtr,
"DET.CHIP.NX %s \n", emptyString);
630 else {cleanUpString (qfitsString, cleanString);
631 fprintf (midiQcLogPtr,
"DET.CHIP.NX %s \n", cleanString);}
633 qfitsString = qfits_query_hdr (inFitsName,
"HIERARCH ESO DET CHIP NY");
634 if (qfitsString == NULL)
635 fprintf (midiQcLogPtr,
"DET.CHIP.NY %s \n", emptyString);
636 else {cleanUpString (qfitsString, cleanString);
637 fprintf (midiQcLogPtr,
"DET.CHIP.NY %s \n", cleanString);}
639 qfitsString = qfits_query_hdr (inFitsName,
"HIERARCH ESO DET DIT");
640 if (qfitsString == NULL)
641 fprintf (midiQcLogPtr,
"DET.DIT %s \n", emptyString);
642 else {cleanUpString (qfitsString, cleanString);
643 fprintf (midiQcLogPtr,
"DET.DIT %s \n", cleanString);}
645 qfitsString = qfits_query_hdr (inFitsName,
"HIERARCH ESO DET DITDELAY");
646 if (qfitsString == NULL)
647 fprintf (midiQcLogPtr,
"DET.DITDELAY %s \n", emptyString);
648 else {cleanUpString (qfitsString, cleanString);
649 fprintf (midiQcLogPtr,
"DET.DITDELAY %s \n", cleanString);}
651 qfitsString = qfits_query_hdr (inFitsName,
"HIERARCH ESO DET INT MODE");
652 if (qfitsString == NULL)
653 fprintf (midiQcLogPtr,
"DET.INT.MODE %s \n", emptyString);
654 else {cleanUpString (qfitsString, cleanString);
655 fprintf (midiQcLogPtr,
"DET.INT.MODE \"%s\" \n", cleanString);}
657 qfitsString = qfits_query_hdr (inFitsName,
"HIERARCH ESO DET NDIT");
658 if (qfitsString == NULL)
659 fprintf (midiQcLogPtr,
"DET.NDIT %s \n", emptyString);
660 else {cleanUpString (qfitsString, cleanString);
661 fprintf (midiQcLogPtr,
"DET.NDIT %s \n", cleanString);}
663 qfitsString = qfits_query_hdr (inFitsName,
"HIERARCH ESO DET NRTS MODE");
664 if (qfitsString == NULL)
665 fprintf (midiQcLogPtr,
"DET.NRTS.MODE %s \n", emptyString);
666 else {cleanUpString (qfitsString, cleanString);
667 fprintf (midiQcLogPtr,
"DET.NRTS.MODE \"%s\" \n", cleanString);}
669 qfitsString = qfits_query_hdr (inFitsName,
"HIERARCH ESO DET WIN1 NX");
670 if (qfitsString == NULL)
671 fprintf (midiQcLogPtr,
"DET.WIN1.NX %s \n", emptyString);
672 else {cleanUpString (qfitsString, cleanString);
673 fprintf (midiQcLogPtr,
"DET.WIN1.NX %s \n", cleanString);}
675 qfitsString = qfits_query_hdr (inFitsName,
"HIERARCH ESO DET WIN1 NY");
676 if (qfitsString == NULL)
677 fprintf (midiQcLogPtr,
"DET.WIN1.NY %s \n", emptyString);
678 else {cleanUpString (qfitsString, cleanString);
679 fprintf (midiQcLogPtr,
"DET.WIN1.NY %s \n", cleanString);}
681 qfitsString = qfits_query_hdr (inFitsName,
"HIERARCH ESO DET WIN2 NX");
682 if (qfitsString == NULL)
683 fprintf (midiQcLogPtr,
"DET.WIN2.NX %s \n", emptyString);
684 else {cleanUpString (qfitsString, cleanString);
685 fprintf (midiQcLogPtr,
"DET.WIN2.NX %s \n", cleanString);}
687 qfitsString = qfits_query_hdr (inFitsName,
"HIERARCH ESO DET WIN2 NY");
688 if (qfitsString == NULL)
689 fprintf (midiQcLogPtr,
"DET.WIN2.NY %s \n", emptyString);
690 else {cleanUpString (qfitsString, cleanString);
691 fprintf (midiQcLogPtr,
"DET.WIN2.NY %s \n", cleanString);}
693 qfitsString = qfits_query_hdr (inFitsName,
"HIERARCH ESO DPR CATG");
694 if (qfitsString == NULL)
695 fprintf (midiQcLogPtr,
"DPR.CATG %s \n", emptyString);
696 else {cleanUpString (qfitsString, cleanString);
697 fprintf (midiQcLogPtr,
"DPR.CATG \"%s\" \n", cleanString);}
699 qfitsString = qfits_query_hdr (inFitsName,
"HIERARCH ESO DPR TECH");
700 if (qfitsString == NULL)
701 fprintf (midiQcLogPtr,
"DPR.TECH %s \n", emptyString);
702 else {cleanUpString (qfitsString, cleanString);
703 fprintf (midiQcLogPtr,
"DPR.TECH \"%s\" \n", cleanString);}
705 qfitsString = qfits_query_hdr (inFitsName,
"HIERARCH ESO DPR TYPE");
706 if (qfitsString == NULL)
707 fprintf (midiQcLogPtr,
"DPR.TYPE %s \n", emptyString);
708 else {cleanUpString (qfitsString, cleanString);
709 fprintf (midiQcLogPtr,
"DPR.TYPE \"%s\" \n", cleanString);}
711 qfitsString = qfits_query_hdr (inFitsName,
"HIERARCH ESO INS CAM NAME");
712 if (qfitsString == NULL)
713 fprintf (midiQcLogPtr,
"INS.CAM.NAME %s \n", emptyString);
714 else {cleanUpString (qfitsString, cleanString);
715 fprintf (midiQcLogPtr,
"INS.CAM.NAME \"%s\" \n", cleanString);}
717 qfitsString = qfits_query_hdr (inFitsName,
"HIERARCH ESO INS FILT NAME");
718 if (qfitsString == NULL)
719 fprintf (midiQcLogPtr,
"INS.FILT.NAME %s \n", emptyString);
720 else {cleanUpString (qfitsString, cleanString);
721 fprintf (midiQcLogPtr,
"INS.FILT.NAME \"%s\" \n", cleanString);}
723 qfitsString = qfits_query_hdr (inFitsName,
"HIERARCH ESO INS GRIS NAME");
724 if (qfitsString == NULL)
725 fprintf (midiQcLogPtr,
"INS.GRIS.NAME %s \n", emptyString);
726 else {cleanUpString (qfitsString, cleanString);
727 fprintf (midiQcLogPtr,
"INS.GRIS.NAME \"%s\" \n", cleanString);}
729 qfitsString = qfits_query_hdr (inFitsName,
"HIERARCH ESO INS MODE");
730 if (qfitsString == NULL)
731 fprintf (midiQcLogPtr,
"INS.MODE %s \n", emptyString);
732 else {cleanUpString (qfitsString, cleanString);
733 fprintf (midiQcLogPtr,
"INS.MODE \"%s\" \n", cleanString);}
735 qfitsString = qfits_query_hdr (inFitsName,
"HIERARCH ESO INS OPT1 NAME");
736 if (qfitsString == NULL)
737 fprintf (midiQcLogPtr,
"INS.OPT1.NAME %s \n", emptyString);
738 else {cleanUpString (qfitsString, cleanString);
739 fprintf (midiQcLogPtr,
"INS.OPT1.NAME \"%s\" \n", cleanString);}
741 qfitsString = qfits_query_hdr (inFitsName,
"HIERARCH ESO INS OPT1 TYPE");
742 if (qfitsString == NULL)
743 fprintf (midiQcLogPtr,
"INS.OPT1.TYPE %s \n", emptyString);
744 else {cleanUpString (qfitsString, cleanString);
745 fprintf (midiQcLogPtr,
"INS.OPT1.TYPE \"%s\" \n", cleanString);}
747 qfitsString = qfits_query_hdr (inFitsName,
"HIERARCH ESO INS SHUT NAME");
748 if (qfitsString == NULL)
749 fprintf (midiQcLogPtr,
"INS.SHUT.NAME %s \n", emptyString);
750 else {cleanUpString (qfitsString, cleanString);
751 fprintf (midiQcLogPtr,
"INS.SHUT.NAME \"%s\" \n", cleanString);}
753 qfitsString = qfits_query_hdr (inFitsName,
"HIERARCH ESO INS SLIT NAME");
754 if (qfitsString == NULL)
755 fprintf (midiQcLogPtr,
"INS.SLIT.NAME %s \n", emptyString);
756 else {cleanUpString (qfitsString, cleanString);
757 fprintf (midiQcLogPtr,
"INS.SLIT.NAME \"%s\" \n", cleanString);}
759 qfitsString = qfits_query_hdr (inFitsName,
"HIERARCH ESO ISS AIRM END");
760 if (qfitsString == NULL)
761 fprintf (midiQcLogPtr,
"ISS.AIRM.END %s \n", emptyString);
762 else {cleanUpString (qfitsString, cleanString);
763 fprintf (midiQcLogPtr,
"ISS.AIRM.END %s \n", cleanString);}
765 qfitsString = qfits_query_hdr (inFitsName,
"HIERARCH ESO ISS AIRM START");
766 if (qfitsString == NULL)
767 fprintf (midiQcLogPtr,
"ISS.AIRM.START %s \n", emptyString);
768 else {cleanUpString (qfitsString, cleanString);
769 fprintf (midiQcLogPtr,
"ISS.AIRM.START %s \n", cleanString);}
771 qfitsString = qfits_query_hdr (inFitsName,
"HIERARCH ESO ISS ALT");
772 if (qfitsString == NULL)
773 fprintf (midiQcLogPtr,
"ISS.ALT %s \n", emptyString);
774 else {cleanUpString (qfitsString, cleanString);
775 fprintf (midiQcLogPtr,
"ISS.ALT %s \n", cleanString);}
777 qfitsString = qfits_query_hdr (inFitsName,
"HIERARCH ESO ISS AMBI FWHM END");
778 if (qfitsString == NULL)
779 fprintf (midiQcLogPtr,
"ISS.AMBI.FWHM.END %s \n", emptyString);
780 else {cleanUpString (qfitsString, cleanString);
781 fprintf (midiQcLogPtr,
"ISS.AMBI.FWHM.END %s \n", cleanString);}
783 qfitsString = qfits_query_hdr (inFitsName,
"HIERARCH ESO ISS AMBI FWHM START");
784 if (qfitsString == NULL)
785 fprintf (midiQcLogPtr,
"ISS.AMBI.FWHM.START %s \n", emptyString);
786 else {cleanUpString (qfitsString, cleanString);
787 fprintf (midiQcLogPtr,
"ISS.AMBI.FWHM.START %s \n", cleanString);}
789 qfitsString = qfits_query_hdr (inFitsName,
"HIERARCH ESO ISS AMBI PRES");
790 if (qfitsString == NULL)
791 fprintf (midiQcLogPtr,
"ISS.AMBI.PRES %s \n", emptyString);
792 else {cleanUpString (qfitsString, cleanString);
793 fprintf (midiQcLogPtr,
"ISS.AMBI.PRES %s \n", cleanString);}
795 qfitsString = qfits_query_hdr (inFitsName,
"HIERARCH ESO ISS AMBI RHUM");
796 if (qfitsString == NULL)
797 fprintf (midiQcLogPtr,
"ISS.AMBI.RHUM %s \n", emptyString);
798 else {cleanUpString (qfitsString, cleanString);
799 fprintf (midiQcLogPtr,
"ISS.AMBI.RHUM %s \n", cleanString);}
801 qfitsString = qfits_query_hdr (inFitsName,
"HIERARCH ESO ISS AMBI TAU0 END");
802 if (qfitsString == NULL)
803 fprintf (midiQcLogPtr,
"ISS.AMBI.TAU0.END %s \n", emptyString);
804 else {cleanUpString (qfitsString, cleanString);
805 fprintf (midiQcLogPtr,
"ISS.AMBI.TAU0.END %s \n", cleanString);}
807 qfitsString = qfits_query_hdr (inFitsName,
"HIERARCH ESO ISS AMBI TAU0 START");
808 if (qfitsString == NULL)
809 fprintf (midiQcLogPtr,
"ISS.AMBI.TAU0.START %s \n", emptyString);
810 else {cleanUpString (qfitsString, cleanString);
811 fprintf (midiQcLogPtr,
"ISS.AMBI.TAU0.START %s \n", cleanString);}
813 qfitsString = qfits_query_hdr (inFitsName,
"HIERARCH ESO ISS AMBI TEMP");
814 if (qfitsString == NULL)
815 fprintf (midiQcLogPtr,
"ISS.AMBI.TEMP %s \n", emptyString);
816 else {cleanUpString (qfitsString, cleanString);
817 fprintf (midiQcLogPtr,
"ISS.AMBI.TEMP %s \n", cleanString);}
819 qfitsString = qfits_query_hdr (inFitsName,
"HIERARCH ESO ISS AMBI WINDDIR");
820 if (qfitsString == NULL)
821 fprintf (midiQcLogPtr,
"ISS.AMBI.WINDDIR %s \n", emptyString);
822 else {cleanUpString (qfitsString, cleanString);
823 fprintf (midiQcLogPtr,
"ISS.AMBI.WINDDIR %s \n", cleanString);}
825 qfitsString = qfits_query_hdr (inFitsName,
"HIERARCH ESO ISS AMBI WINDSP");
826 if (qfitsString == NULL)
827 fprintf (midiQcLogPtr,
"ISS.AMBI.WINDSP %s \n", emptyString);
828 else {cleanUpString (qfitsString, cleanString);
829 fprintf (midiQcLogPtr,
"ISS.AMBI.WINDSP %s \n", cleanString);}
831 qfitsString = qfits_query_hdr (inFitsName,
"HIERARCH ESO ISS AZ");
832 if (qfitsString == NULL)
833 fprintf (midiQcLogPtr,
"ISS.AZ %s \n", emptyString);
834 else {cleanUpString (qfitsString, cleanString);
835 fprintf (midiQcLogPtr,
"ISS.AZ %s \n", cleanString);}
837 qfitsString = qfits_query_hdr (inFitsName,
"HIERARCH ESO ISS CONF STATION1");
838 if (qfitsString == NULL)
839 fprintf (midiQcLogPtr,
"ISS.CONF.STATION1 %s \n", emptyString);
840 else {cleanUpString (qfitsString, cleanString);
841 fprintf (midiQcLogPtr,
"ISS.CONF.STATION1 \"%s\" \n", cleanString);}
843 qfitsString = qfits_query_hdr (inFitsName,
"HIERARCH ESO ISS CONF STATION2");
844 if (qfitsString == NULL)
845 fprintf (midiQcLogPtr,
"ISS.CONF.STATION2 %s \n", emptyString);
846 else {cleanUpString (qfitsString, cleanString);
847 fprintf (midiQcLogPtr,
"ISS.CONF.STATION2 \"%s\" \n", cleanString);}
849 qfitsString = qfits_query_hdr (inFitsName,
"HIERARCH ESO ISS CONF T1X");
850 if (qfitsString == NULL)
851 fprintf (midiQcLogPtr,
"ISS.CONF.T1X %s \n", emptyString);
852 else {cleanUpString (qfitsString, cleanString);
853 fprintf (midiQcLogPtr,
"ISS.CONF.T1X %s \n", cleanString);}
855 qfitsString = qfits_query_hdr (inFitsName,
"HIERARCH ESO ISS CONF T1Y");
856 if (qfitsString == NULL)
857 fprintf (midiQcLogPtr,
"ISS.CONF.T1Y %s \n", emptyString);
858 else {cleanUpString (qfitsString, cleanString);
859 fprintf (midiQcLogPtr,
"ISS.CONF.T1Y %s \n", cleanString);}
861 qfitsString = qfits_query_hdr (inFitsName,
"HIERARCH ESO ISS CONF T1Z");
862 if (qfitsString == NULL)
863 fprintf (midiQcLogPtr,
"ISS.CONF.T1Z %s \n", emptyString);
864 else {cleanUpString (qfitsString, cleanString);
865 fprintf (midiQcLogPtr,
"ISS.CONF.T1Z %s \n", cleanString);}
867 qfitsString = qfits_query_hdr (inFitsName,
"HIERARCH ESO ISS CONF T2X");
868 if (qfitsString == NULL)
869 fprintf (midiQcLogPtr,
"ISS.CONF.T2X %s \n", emptyString);
870 else {cleanUpString (qfitsString, cleanString);
871 fprintf (midiQcLogPtr,
"ISS.CONF.T2X %s \n", cleanString);}
873 qfitsString = qfits_query_hdr (inFitsName,
"HIERARCH ESO ISS CONF T2Y");
874 if (qfitsString == NULL)
875 fprintf (midiQcLogPtr,
"ISS.CONF.T2Y %s \n", emptyString);
876 else {cleanUpString (qfitsString, cleanString);
877 fprintf (midiQcLogPtr,
"ISS.CONF.T2Y %s \n", cleanString);}
879 qfitsString = qfits_query_hdr (inFitsName,
"HIERARCH ESO ISS CONF T2Z");
880 if (qfitsString == NULL)
881 fprintf (midiQcLogPtr,
"ISS.CONF.T2Z %s \n", emptyString);
882 else {cleanUpString (qfitsString, cleanString);
883 fprintf (midiQcLogPtr,
"ISS.CONF.T2Z %s \n", cleanString);}
885 qfitsString = qfits_query_hdr (inFitsName,
"HIERARCH ESO ISS PARANG END");
886 if (qfitsString == NULL)
887 fprintf (midiQcLogPtr,
"ISS.PARANG.END %s \n", emptyString);
888 else {cleanUpString (qfitsString, cleanString);
889 fprintf (midiQcLogPtr,
"ISS.PARANG.END %s \n", cleanString);}
891 qfitsString = qfits_query_hdr (inFitsName,
"HIERARCH ESO ISS PARANG START");
892 if (qfitsString == NULL)
893 fprintf (midiQcLogPtr,
"ISS.PARANG.START %s \n", emptyString);
894 else {cleanUpString (qfitsString, cleanString);
895 fprintf (midiQcLogPtr,
"ISS.PARANG.START %s \n", cleanString);}
897 qfitsString = qfits_query_hdr (inFitsName,
"HIERARCH ESO ISS PBL12 END");
898 if (qfitsString == NULL)
899 fprintf (midiQcLogPtr,
"ISS.PBL12.END %s \n", emptyString);
900 else {cleanUpString (qfitsString, cleanString);
901 fprintf (midiQcLogPtr,
"ISS.PBL12.END %s \n", cleanString);}
903 qfitsString = qfits_query_hdr (inFitsName,
"HIERARCH ESO ISS PBL12 START");
904 if (qfitsString == NULL)
905 fprintf (midiQcLogPtr,
"ISS.PBL12.START %s \n", emptyString);
906 else {cleanUpString (qfitsString, cleanString);
907 fprintf (midiQcLogPtr,
"ISS.PBL12.START %s \n", cleanString);}
909 qfitsString = qfits_query_hdr (inFitsName,
"HIERARCH ESO OBS ID");
910 if (qfitsString == NULL)
911 fprintf (midiQcLogPtr,
"OBS.ID %s \n", emptyString);
912 else {cleanUpString (qfitsString, cleanString);
913 fprintf (midiQcLogPtr,
"OBS.ID \"%s\" \n", cleanString);}
915 qfitsString = qfits_query_hdr (inFitsName,
"HIERARCH ESO OBS NAME");
916 if (qfitsString == NULL)
917 fprintf (midiQcLogPtr,
"OBS.NAME %s \n", emptyString);
918 else {cleanUpString (qfitsString, cleanString);
919 fprintf (midiQcLogPtr,
"OBS.NAME \"%s\" \n", cleanString);}
921 qfitsString = qfits_query_hdr (inFitsName,
"HIERARCH ESO OBS PI-COI ID");
922 if (qfitsString == NULL)
923 fprintf (midiQcLogPtr,
"OBS.PI-COI.ID %s \n", emptyString);
924 else {cleanUpString (qfitsString, cleanString);
925 fprintf (midiQcLogPtr,
"OBS.PI-COI.ID \"%s\" \n", cleanString);}
927 qfitsString = qfits_query_hdr (inFitsName,
"HIERARCH ESO OBS PI-COI NAME");
928 if (qfitsString == NULL)
929 fprintf (midiQcLogPtr,
"OBS.PI-COI.NAME %s \n", emptyString);
930 else {cleanUpString (qfitsString, cleanString);
931 fprintf (midiQcLogPtr,
"OBS.PI-COI.NAME \"%s\" \n", cleanString);}
933 qfitsString = qfits_query_hdr (inFitsName,
"HIERARCH ESO OBS PROG ID");
934 if (qfitsString == NULL)
935 fprintf (midiQcLogPtr,
"OBS.PROG.ID %s \n", emptyString);
936 else {cleanUpString (qfitsString, cleanString);
937 fprintf (midiQcLogPtr,
"OBS.PROG.ID \"%s\" \n", cleanString);}
939 qfitsString = qfits_query_hdr (inFitsName,
"HIERARCH ESO OBS START");
940 if (qfitsString == NULL)
941 fprintf (midiQcLogPtr,
"OBS.START %s \n", emptyString);
942 else {cleanUpString (qfitsString, cleanString);
943 fprintf (midiQcLogPtr,
"OBS.START \"%s\" \n", cleanString);}
945 qfitsString = qfits_query_hdr (inFitsName,
"HIERARCH ESO OBS TARG NAME");
946 if (qfitsString == NULL)
947 fprintf (midiQcLogPtr,
"OBS.TARG.NAME %s \n", emptyString);
948 else {cleanUpString (qfitsString, cleanString);
949 fprintf (midiQcLogPtr,
"OBS.TARG.NAME \"%s\" \n", cleanString);}
951 qfitsString = qfits_query_hdr (inFitsName,
"HIERARCH ESO OCS EXPO1 FNAME1");
952 if (qfitsString == NULL)
953 fprintf (midiQcLogPtr,
"OCS.EXPO1.FNAME1 %s \n", emptyString);
954 else {cleanUpString (qfitsString, cleanString);
955 fprintf (midiQcLogPtr,
"OCS.EXPO1.FNAME1 \"%s\" \n", cleanString);}
957 qfitsString = qfits_query_hdr (inFitsName,
"HIERARCH ESO TPL ID");
958 if (qfitsString == NULL)
959 fprintf (midiQcLogPtr,
"TPL.ID %s \n", emptyString);
960 else {cleanUpString (qfitsString, cleanString);
961 fprintf (midiQcLogPtr,
"TPL.ID \"%s\" \n", cleanString);}
963 qfitsString = qfits_query_hdr (inFitsName,
"HIERARCH ESO TPL START");
964 if (qfitsString == NULL)
965 fprintf (midiQcLogPtr,
"TPL.START %s \n", emptyString);
966 else {cleanUpString (qfitsString, cleanString);
967 fprintf (midiQcLogPtr,
"TPL.START \"%s\" \n", cleanString);}
991 void addProdInfoToAcqQcLog (
993 MidiFiles *fileNames,
994 ImageQuality *acqImage,
1000 const char routine[] =
"addProdInfoToAcqQcLog";
1002 FILE *inFitsBatchPtr;
1003 char *stringQfits, *messageBuffer, *currentTime, *textBuff, *cleanString,
1004 *stringTemp, *classification;
1010 if (diagnostic > 4)cpl_msg_info(cpl_func,
"Invoking routine '%s' \n", routine);
1011 if (diagnostic > 4) fprintf (midiReportPtr,
"Invoking routine '%s' \n", routine);
1017 classification = (
char *) calloc (MAX_STRING_LENGTH,
sizeof (
char));
1018 stringTemp = (
char *) calloc (MAX_STRING_LENGTH,
sizeof (
char));
1019 cleanString = (
char *) calloc (MAX_STRING_LENGTH,
sizeof (
char));
1020 textBuff = (
char *) calloc (MAX_STRING_LENGTH,
sizeof (
char));
1021 messageBuffer = (
char *) calloc (MAX_STRING_LENGTH,
sizeof (
char));
1022 currentTime = (
char *) calloc (MIN_STRING_LENGTH,
sizeof (
char));
1026 newTime = gmtime (&now);
1027 strftime (currentTime, MIN_STRING_LENGTH,
"%a %d %b %Y at %H:%M:%S", newTime);
1030 fprintf (midiQcLogPtr,
"PRO.TYPE \"%s\" \n", format->obsType);
1031 fprintf (midiQcLogPtr,
"PRO.CATG \"IMAGE_QUALITY\" \n");
1032 fprintf (midiQcLogPtr,
"PRO.ARCFILE \"%s\" \n", fileNames->archFileName);
1033 fprintf (midiQcLogPtr,
"PRO.PIPEDATE \"%s\" \n", currentTime);
1034 fprintf (midiQcLogPtr,
"PRO.VERSION \"%s\" \n", MIDI_PIPE_VERSION);
1035 fprintf (midiQcLogPtr,
"PRO.PIPEFILE \"%s\" \n", fileNames->pipeFileName);
1036 fprintf (midiQcLogPtr,
"PRO.DID \"%s\" \n", MIDI_QC_DIC_VERSION);
1039 if ((inFitsBatchPtr = fopen (fileNames->inFitsBatch,
"r")) == NULL)
1042 midiReportWarning (midiReportPtr, routine, __FILE__, __LINE__,
"Cannot open input FITS file list");
1043 free (messageBuffer);
1047 free (classification);
1054 while (fgets (stringTemp, MAX_STRING_LENGTH, inFitsBatchPtr) != NULL)
1056 sprintf (classification,
"%s",
"");
1057 sscanf (stringTemp,
"%s%s", messageBuffer, classification);
1060 if (strcmp (classification,
"") == 0)
1062 stringQfits = qfits_query_hdr (messageBuffer,
"HIERARCH ESO DPR CATG");
1063 if (stringQfits == NULL)
1065 sprintf (classification,
"%s",
"UNKNOWN");
1066 midiReportWarning (midiReportPtr, routine, __FILE__, __LINE__,
"Cannot get Observation Category");
1070 cleanUpString (stringQfits, cleanString);
1071 sprintf (classification,
"%s", cleanString);
1074 removePathName (messageBuffer, midiReportPtr);
1075 fprintf (midiQcLogPtr,
"PRO.REC1.RAW%d.NAME \"%s\" \n", i, messageBuffer);
1076 fprintf (midiQcLogPtr,
"PRO.REC1.RAW%d.CATG \"%s\" \n", i++, classification);
1078 fclose (inFitsBatchPtr);
1081 for (i = 0; i < format->numOfDetectorRegions; i++)
1083 fprintf (midiQcLogPtr,
"QC.ACQ.TARX%d %0.2f \n", i+1, (acqImage->coordX)[i]);
1084 fprintf (midiQcLogPtr,
"QC.ACQ.TARY%d %0.2f \n", i+1, (acqImage->coordY)[i]);
1085 fprintf (midiQcLogPtr,
"QC.ACQ.TARSIZEX%d %0.2f \n", i+1, (acqImage->sizeX)[i]);
1086 fprintf (midiQcLogPtr,
"QC.ACQ.TARSIZEY%d %0.2f \n", i+1, (acqImage->sizeY)[i]);
1087 fprintf (midiQcLogPtr,
"QC.ACQ.TARFLUX%d %0.2f \n", i+1, (acqImage->targetFlux)[i]);
1091 free (messageBuffer);
1096 free (classification);