26 #include "midiGlobal.h"
28 #include "errorHandling.h"
29 #include "midiFitsUtility.h"
30 #include "fileHandling.h"
31 #include "createProdKappa.h"
53 void createKappaProd (
57 TransferRatios *trRatios,
63 const char routine[] =
"createKappaProd";
69 if (diagnostic > 4)cpl_msg_info(cpl_func,
"Invoking routine '%s' \n", routine);
70 if (diagnostic > 4) fprintf(midiReportPtr,
"Invoking routine '%s' \n", routine);
72 cpl_msg_info(cpl_func,
"\nCreating Product files for SCI_PHOT_KAPPA from batch %d \n", batchNumber);
73 cpl_msg_info(cpl_func,
"---------------------------------------------------- \n");
74 fprintf (midiReportPtr,
"\nCreating Product files for SCI_PHOT_KAPPA from batch %d \n", batchNumber);
75 fprintf (midiReportPtr,
"---------------------------------------------------- \n");
79 createTransferRatiosFile (update, size, fileNames, trRatios, error);
85 createKappaPrimHead (fileNames, size, trRatios, error);
88 midiReportWarning (midiReportPtr, routine, __FILE__, __LINE__,
"Cannot create Primary Header extension");
93 spkImage = (
float *) calloc (size->iXWidth * size->iYWidth, sizeof (
float));
94 qdSpk.filename = fileNames->outFitsName;
95 qdSpk.npix = size->iXWidth * size->iYWidth;
96 qdSpk.ptype = PTYPE_FLOAT;
97 qdSpk.fbuf = spkImage;
98 qdSpk.out_ptype = BPP_IEEE_FLOAT;
99 qfits_pixdump (&qdSpk);
103 createKappaQcLog (fileNames->inFitsName, error);
104 if (*error) midiReportWarning (midiReportPtr, routine, __FILE__, __LINE__,
"Cannot copy keywords to QC log");
107 addProdInfoToKappaQcLog (size, fileNames, trRatios, error);
127 void createKappaPrimHead (
128 MidiFiles *fileNames,
130 TransferRatios *trRatios,
136 const char routine[] =
"createKappaPrimHead";
137 qfits_header *outFitsHeader;
138 FILE *inFitsBatchPtr=NULL, *outFitsPtr;
140 char *textBuff, *stringQfits, *messageBuffer, *currentTime, *cleanString,
141 *stringTemp, *classification, *sWidthX, *sWidthY;
148 if (diagnostic > 4)cpl_msg_info(cpl_func,
"Invoking routine '%s' \n", routine);
149 if (diagnostic > 4) fprintf(midiReportPtr,
"Invoking routine '%s' \n", routine);
155 if ((inFitsBatchPtr = fopen (fileNames->inFitsBatch,
"r")) == NULL)
157 midiReportWarning (midiReportPtr, routine, __FILE__, __LINE__,
"Cannot open input FITS file list");
163 textBuff = (
char *) calloc (MAX_STRING_LENGTH,
sizeof (
char));
164 classification = (
char *) calloc (MAX_STRING_LENGTH,
sizeof (
char));
165 stringTemp = (
char *) calloc (MAX_STRING_LENGTH,
sizeof (
char));
166 cleanString = (
char *) calloc (MAX_STRING_LENGTH,
sizeof (
char));
167 messageBuffer = (
char *) calloc (MAX_STRING_LENGTH,
sizeof (
char));
168 currentTime = (
char *) calloc (MIN_STRING_LENGTH,
sizeof (
char));
169 sWidthX = (
char *) calloc (MIN_STRING_LENGTH,
sizeof (
char));
170 sWidthY = (
char *) calloc (MIN_STRING_LENGTH,
sizeof (
char));
174 newTime = gmtime (&now);
175 strftime (currentTime, MIN_STRING_LENGTH,
"%a %d %b %Y at %H:%M:%S", newTime);
178 fgets (stringTemp, MAX_STRING_LENGTH, inFitsBatchPtr);
179 sprintf (classification,
"%s",
"");
180 sscanf (stringTemp,
"%s%s", fileNames->inFitsName, classification);
183 outFitsHeader = qfits_header_read (fileNames->inFitsName);
184 if (outFitsHeader == NULL)
187 midiReportWarning (midiReportPtr, routine, __FILE__, __LINE__,
"Cannot load header from the input FITS file");
188 free (messageBuffer);
192 free (classification);
200 sprintf (sWidthY,
"%d", size->iYWidth);
201 sprintf (sWidthX,
"%d", size->iXWidth);
204 qfits_header_mod (outFitsHeader,
"BITPIX",
"-32",
"number of bits per pixel");
205 qfits_header_mod (outFitsHeader,
"NAXIS",
"2",
"number of data axes");
206 qfits_header_add (outFitsHeader,
"NAXIS1", sWidthX,
"", NULL);
207 qfits_header_add (outFitsHeader,
"NAXIS2", sWidthY,
"", NULL);
208 qfits_header_mod (outFitsHeader,
"INSTRUME",
"MIDI",
"MIDI Raw Data Display FITS created by DRS pipeline" );
212 qfits_header_add (outFitsHeader,
"HIERARCH ESO PRO TYPE", size->obsType,
"MIDI pipeline product type", NULL);
213 qfits_header_add (outFitsHeader,
"HIERARCH ESO PRO CATG",
"KAPPA_MATRIX",
"Pipeline product category", NULL);
214 qfits_header_add (outFitsHeader,
"HIERARCH ESO PRO ARCFILE", fileNames->archFileName,
"Arcfile name of first raw file", NULL);
215 qfits_header_add (outFitsHeader,
"HIERARCH ESO PRO PIPEDATE", currentTime,
"Pipeline run date",
"");
216 qfits_header_add (outFitsHeader,
"HIERARCH ESO PRO VERSION", MIDI_PIPE_VERSION,
"Pipeline version", NULL);
217 qfits_header_add (outFitsHeader,
"PIPEFILE", fileNames->pipeFileName,
"Pipeline product file name", NULL);
218 qfits_header_add (outFitsHeader,
"HIERARCH ESO PRO DID", MIDI_QC_DIC_VERSION,
"QC dictionary version", NULL);
221 rewind (inFitsBatchPtr);
225 while (fgets (stringTemp, MAX_STRING_LENGTH, inFitsBatchPtr) != NULL)
227 sprintf (classification,
"%s",
"");
228 sscanf (stringTemp,
"%s%s", messageBuffer, classification);
231 if (strcmp (classification,
"") == 0)
233 stringQfits = qfits_query_hdr (messageBuffer,
"HIERARCH ESO DPR CATG");
234 if (stringQfits == NULL)
236 sprintf (classification,
"%s",
"UNKNOWN");
237 midiReportWarning (midiReportPtr, routine, __FILE__, __LINE__,
"Cannot get Observation Category");
241 cleanUpString (stringQfits, cleanString);
242 sprintf (classification,
"%s", cleanString);
245 removePathName (messageBuffer, midiReportPtr);
246 sprintf (textBuff,
"HIERARCH ESO PRO REC1 RAW%d NAME", i);
247 qfits_header_add (outFitsHeader, textBuff, messageBuffer,
"FITS file name",
"");
248 sprintf (textBuff,
"HIERARCH ESO PRO REC1 RAW%d CATG", i++);
249 qfits_header_add (outFitsHeader, textBuff, classification,
"Observation Categoty",
"");
251 fclose (inFitsBatchPtr);
254 sprintf (messageBuffer,
"%d", trRatios->exists);
255 qfits_header_add (outFitsHeader,
"HIERARCH ESO QC KAPPA_EXISTS", messageBuffer,
"1 = Transfer Ratios exist",
"");
256 if (trRatios->exists)
258 for (i = 0; i < size->iXWidth; i++)
260 if (badChannelList[i])
262 sprintf (messageBuffer,
"%s", UNAV);
263 sprintf (textBuff,
"HIERARCH ESO QC KA1 CH%d", i);
264 qfits_header_add (outFitsHeader, textBuff, messageBuffer,
"Transfer Ratio",
"");
265 sprintf (messageBuffer,
"%s", UNAV);
266 sprintf (textBuff,
"HIERARCH ESO QC SIGA1 CH%d", i);
267 qfits_header_add (outFitsHeader, textBuff, messageBuffer,
"Transfer Ratio Error",
"");
269 sprintf (messageBuffer,
"%s", UNAV);
270 sprintf (textBuff,
"HIERARCH ESO QC KA2 CH%d", i);
271 qfits_header_add (outFitsHeader, textBuff, messageBuffer,
"Transfer Ratio",
"");
272 sprintf (messageBuffer,
"%s", UNAV);
273 sprintf (textBuff,
"HIERARCH ESO QC SIGA2 CH%d", i);
274 qfits_header_add (outFitsHeader, textBuff, messageBuffer,
"Transfer Ratio Error",
"");
276 sprintf (messageBuffer,
"%s", UNAV);
277 sprintf (textBuff,
"HIERARCH ESO QC KB1 CH%d", i);
278 qfits_header_add (outFitsHeader, textBuff, messageBuffer,
"Transfer Ratio",
"");
279 sprintf (messageBuffer,
"%s", UNAV);
280 sprintf (textBuff,
"HIERARCH ESO QC SIGB1 CH%d", i);
281 qfits_header_add (outFitsHeader, textBuff, messageBuffer,
"Transfer Ratio Error",
"");
283 sprintf (messageBuffer,
"%s", UNAV);
284 sprintf (textBuff,
"HIERARCH ESO QC KB2 CH%d", i);
285 qfits_header_add (outFitsHeader, textBuff, messageBuffer,
"Transfer Ratio",
"");
286 sprintf (messageBuffer,
"%s", UNAV);
287 sprintf (textBuff,
"HIERARCH ESO QC SIGB2 CH%d", i);
288 qfits_header_add (outFitsHeader, textBuff, messageBuffer,
"Transfer Ratio Error",
"");
292 sprintf (messageBuffer,
"%f", trRatios->ka1[i]);
293 sprintf (textBuff,
"HIERARCH ESO QC KA1 CH%d", i);
294 qfits_header_add (outFitsHeader, textBuff, messageBuffer,
"Transfer Ratio",
"");
295 sprintf (messageBuffer,
"%f", trRatios->siga1[i]);
296 sprintf (textBuff,
"HIERARCH ESO QC SIGA1 CH%d", i);
297 qfits_header_add (outFitsHeader, textBuff, messageBuffer,
"Transfer Ratio Error",
"");
299 sprintf (messageBuffer,
"%f", trRatios->ka2[i]);
300 sprintf (textBuff,
"HIERARCH ESO QC KA2 CH%d", i);
301 qfits_header_add (outFitsHeader, textBuff, messageBuffer,
"Transfer Ratio",
"");
302 sprintf (messageBuffer,
"%f", trRatios->siga2[i]);
303 sprintf (textBuff,
"HIERARCH ESO QC SIGA2 CH%d", i);
304 qfits_header_add (outFitsHeader, textBuff, messageBuffer,
"Transfer Ratio Error",
"");
306 sprintf (messageBuffer,
"%f", trRatios->kb1[i]);
307 sprintf (textBuff,
"HIERARCH ESO QC KB1 CH%d", i);
308 qfits_header_add (outFitsHeader, textBuff, messageBuffer,
"Transfer Ratio",
"");
309 sprintf (messageBuffer,
"%f", trRatios->sigb1[i]);
310 sprintf (textBuff,
"HIERARCH ESO QC SIGB1 CH%d", i);
311 qfits_header_add (outFitsHeader, textBuff, messageBuffer,
"Transfer Ratio Error",
"");
313 sprintf (messageBuffer,
"%f", trRatios->kb2[i]);
314 sprintf (textBuff,
"HIERARCH ESO QC KB2 CH%d", i);
315 qfits_header_add (outFitsHeader, textBuff, messageBuffer,
"Transfer Ratio",
"");
316 sprintf (messageBuffer,
"%f", trRatios->sigb2[i]);
317 sprintf (textBuff,
"HIERARCH ESO QC SIGB2 CH%d", i);
318 qfits_header_add (outFitsHeader, textBuff, messageBuffer,
"Transfer Ratio Error",
"");
324 qfits_header_add (outFitsHeader,
"HIERARCH ESO QC PLACEH1",
"TBD",
"TBD",
"");
325 qfits_header_add (outFitsHeader,
"HIERARCH ESO QC PLACEH2",
"TBD",
"TBD",
"");
326 qfits_header_add (outFitsHeader,
"HIERARCH ESO QC PLACEH3",
"TBD",
"TBD",
"");
327 qfits_header_add (outFitsHeader,
"HIERARCH ESO QC PLACEH4",
"TBD",
"TBD",
"");
328 qfits_header_add (outFitsHeader,
"HIERARCH ESO QC PLACEH5",
"TBD",
"TBD",
"");
329 qfits_header_add (outFitsHeader,
"HIERARCH ESO QC PLACEH6",
"TBD",
"TBD",
"");
330 qfits_header_add (outFitsHeader,
"HIERARCH ESO QC PLACEH7",
"TBD",
"TBD",
"");
331 qfits_header_add (outFitsHeader,
"HIERARCH ESO QC PLACEH8",
"TBD",
"TBD",
"");
332 qfits_header_add (outFitsHeader,
"HIERARCH ESO QC PLACEH9",
"TBD",
"TBD",
"");
335 if (stat (fileNames->outFitsName, &buf) == 0)
remove (fileNames->outFitsName);
336 outFitsPtr = fopen (fileNames->outFitsName,
"w");
340 midiReportWarning (midiReportPtr, routine, __FILE__, __LINE__,
"Cannot create output FITS file");
341 free (messageBuffer);
345 free (classification);
352 cpl_msg_info(cpl_func,
"Created Product FITS file: %s \n", fileNames->outFitsName);
353 fprintf (midiReportPtr,
"Created Product FITS file: %s \n", fileNames->outFitsName);
356 qfits_header_sort (&outFitsHeader);
357 qfits_header_dump (outFitsHeader, outFitsPtr);
359 qfits_header_destroy (outFitsHeader);
362 free (messageBuffer);
366 free (classification);
390 void createKappaQcLog (
398 const char routine[] =
"createKappaQcLog";
399 char *qfitsString, *emptyString, *cleanString;
403 if (diagnostic > 4)cpl_msg_info(cpl_func,
"Invoking routine '%s' \n", routine);
404 if (diagnostic > 4) fprintf(midiReportPtr,
"Invoking routine '%s' \n", routine);
410 emptyString = (
char *) calloc (MIN_STRING_LENGTH,
sizeof (
char));
411 cleanString = (
char *) calloc (MAX_STRING_LENGTH,
sizeof (
char));
414 strcpy (emptyString,
"\"UNKNOWN\"");
417 qfitsString = qfits_query_hdr (inFitsName,
"ARCFILE");
418 if (qfitsString == NULL)
419 fprintf (midiQcLogPtr,
"ARCFILE %s \n", emptyString);
420 else {cleanUpString (qfitsString, cleanString);
421 fprintf (midiQcLogPtr,
"ARCFILE \"%s\" \n", cleanString);}
423 qfitsString = qfits_query_hdr (inFitsName,
"TELESCOP");
424 if (qfitsString == NULL)
425 fprintf (midiQcLogPtr,
"TELESCOP %s \n", emptyString);
426 else {cleanUpString (qfitsString, cleanString);
427 fprintf (midiQcLogPtr,
"TELESCOP \"%s\" \n", cleanString);}
429 qfitsString = qfits_query_hdr (inFitsName,
"INSTRUME");
430 if (qfitsString == NULL)
431 fprintf (midiQcLogPtr,
"INSTRUME %s \n", emptyString);
432 else {cleanUpString (qfitsString, cleanString);
433 fprintf (midiQcLogPtr,
"INSTRUME \"%s\" \n", cleanString);}
435 qfitsString = qfits_query_hdr (inFitsName,
"MJD-OBS");
436 if (qfitsString == NULL)
437 fprintf (midiQcLogPtr,
"MJD-OBS %s \n", emptyString);
438 else {cleanUpString (qfitsString, cleanString);
439 fprintf (midiQcLogPtr,
"MJD-OBS \"%s\" \n", cleanString);}
441 qfitsString = qfits_query_hdr (inFitsName,
"DATE-OBS");
442 if (qfitsString == NULL)
443 fprintf (midiQcLogPtr,
"DATE-OBS %s \n", emptyString);
444 else {cleanUpString (qfitsString, cleanString);
445 fprintf (midiQcLogPtr,
"DATE-OBS \"%s\" \n", cleanString);}
447 qfitsString = qfits_query_hdr (inFitsName,
"UTC");
448 if (qfitsString == NULL)
449 fprintf (midiQcLogPtr,
"UTC %s \n", emptyString);
450 else {cleanUpString (qfitsString, cleanString);
451 fprintf (midiQcLogPtr,
"UTC %s \n", cleanString);}
453 qfitsString = qfits_query_hdr (inFitsName,
"LST");
454 if (qfitsString == NULL)
455 fprintf (midiQcLogPtr,
"LST %s \n", emptyString);
456 else {cleanUpString (qfitsString, cleanString);
457 fprintf (midiQcLogPtr,
"LST %s \n", cleanString);}
459 qfitsString = qfits_query_hdr (inFitsName,
"HIERARCH ESO COU GUID DEC");
460 if (qfitsString == NULL)
461 fprintf (midiQcLogPtr,
"COU.GUID.DEC %s \n", emptyString);
462 else {cleanUpString (qfitsString, cleanString);
463 fprintf (midiQcLogPtr,
"COU.GUID.DEC %s \n", cleanString);}
465 qfitsString = qfits_query_hdr (inFitsName,
"HIERARCH ESO COU GUID RA");
466 if (qfitsString == NULL)
467 fprintf (midiQcLogPtr,
"COU.GUID.RA %s \n", emptyString);
468 else {cleanUpString (qfitsString, cleanString);
469 fprintf (midiQcLogPtr,
"COU.GUID.RA %s \n", cleanString);}
471 qfitsString = qfits_query_hdr (inFitsName,
"HIERARCH ESO COU GUID MAG");
472 if (qfitsString == NULL)
473 fprintf (midiQcLogPtr,
"COU.GUID.MAG %s \n", emptyString);
474 else {cleanUpString (qfitsString, cleanString);
475 fprintf (midiQcLogPtr,
"COU.GUID.MAG %s \n", cleanString);}
477 qfitsString = qfits_query_hdr (inFitsName,
"HIERARCH ESO COU AO1 STREHL_MEAN");
478 if (qfitsString == NULL)
479 fprintf (midiQcLogPtr,
"COU.AO1.STREHL_MEAN %s \n", emptyString);
480 else {cleanUpString (qfitsString, cleanString);
481 fprintf (midiQcLogPtr,
"COU.AO1.STREHL_MEAN %s \n", cleanString);}
483 qfitsString = qfits_query_hdr (inFitsName,
"HIERARCH ESO COU AO2 STREHL_MEAN");
484 if (qfitsString == NULL)
485 fprintf (midiQcLogPtr,
"COU.AO2.STREHL_MEAN %s \n", emptyString);
486 else {cleanUpString (qfitsString, cleanString);
487 fprintf (midiQcLogPtr,
"COU.AO2.STREHL_MEAN %s \n", cleanString);}
489 qfitsString = qfits_query_hdr (inFitsName,
"HIERARCH ESO COU AO1 STREHL_RMS");
490 if (qfitsString == NULL)
491 fprintf (midiQcLogPtr,
"COU.AO1.STREHL_RMS %s \n", emptyString);
492 else {cleanUpString (qfitsString, cleanString);
493 fprintf (midiQcLogPtr,
"COU.AO1.STREHL_RMS %s \n", cleanString);}
495 qfitsString = qfits_query_hdr (inFitsName,
"HIERARCH ESO COU AO2 STREHL_RMS");
496 if (qfitsString == NULL)
497 fprintf (midiQcLogPtr,
"COU.AO2.STREHL_RMS %s \n", emptyString);
498 else {cleanUpString (qfitsString, cleanString);
499 fprintf (midiQcLogPtr,
"COU.AO2.STREHL_RMS %s \n", cleanString);}
501 qfitsString = qfits_query_hdr (inFitsName,
"HIERARCH ESO COU AO1 WFE_MEAN");
502 if (qfitsString == NULL)
503 fprintf (midiQcLogPtr,
"COU.AO1.WFE_MEAN %s \n", emptyString);
504 else {cleanUpString (qfitsString, cleanString);
505 fprintf (midiQcLogPtr,
"COU.AO1.WFE_MEAN %s \n", cleanString);}
507 qfitsString = qfits_query_hdr (inFitsName,
"HIERARCH ESO COU AO2 WFE_MEAN");
508 if (qfitsString == NULL)
509 fprintf (midiQcLogPtr,
"COU.AO2.WFE_MEAN %s \n", emptyString);
510 else {cleanUpString (qfitsString, cleanString);
511 fprintf (midiQcLogPtr,
"COU.AO2.WFE_MEAN %s \n", cleanString);}
513 qfitsString = qfits_query_hdr (inFitsName,
"HIERARCH ESO COU AO1 WFE_RMS");
514 if (qfitsString == NULL)
515 fprintf (midiQcLogPtr,
"COU.AO1.WFE_RMS %s \n", emptyString);
516 else {cleanUpString (qfitsString, cleanString);
517 fprintf (midiQcLogPtr,
"COU.AO1.WFE_RMS %s \n", cleanString);}
519 qfitsString = qfits_query_hdr (inFitsName,
"HIERARCH ESO COU AO2 WFE_RMS");
520 if (qfitsString == NULL)
521 fprintf (midiQcLogPtr,
"COU.AO2.WFE_RMS %s \n", emptyString);
522 else {cleanUpString (qfitsString, cleanString);
523 fprintf (midiQcLogPtr,
"COU.AO2.WFE_RMS %s \n", cleanString);}
525 qfitsString = qfits_query_hdr (inFitsName,
"HIERARCH ESO COU AO1 ENC_MEAN");
526 if (qfitsString == NULL)
527 fprintf (midiQcLogPtr,
"COU.AO1.ENC_MEAN %s \n", emptyString);
528 else {cleanUpString (qfitsString, cleanString);
529 fprintf (midiQcLogPtr,
"COU.AO1.ENC_MEAN %s \n", cleanString);}
531 qfitsString = qfits_query_hdr (inFitsName,
"HIERARCH ESO COU AO2 ENC_MEAN");
532 if (qfitsString == NULL)
533 fprintf (midiQcLogPtr,
"COU.AO2.ENC_MEAN %s \n", emptyString);
534 else {cleanUpString (qfitsString, cleanString);
535 fprintf (midiQcLogPtr,
"COU.AO2.ENC_MEAN %s \n", cleanString);}
537 qfitsString = qfits_query_hdr (inFitsName,
"HIERARCH ESO COU AO1 ENC_RMS");
538 if (qfitsString == NULL)
539 fprintf (midiQcLogPtr,
"COU.AO1.ENC_RMS %s \n", emptyString);
540 else {cleanUpString (qfitsString, cleanString);
541 fprintf (midiQcLogPtr,
"COU.AO1.ENC_RMS %s \n", cleanString);}
543 qfitsString = qfits_query_hdr (inFitsName,
"HIERARCH ESO COU AO2 ENC_RMS");
544 if (qfitsString == NULL)
545 fprintf (midiQcLogPtr,
"COU.AO2.ENC_RMS %s \n", emptyString);
546 else {cleanUpString (qfitsString, cleanString);
547 fprintf (midiQcLogPtr,
"COU.AO2.ENC_RMS %s \n", cleanString);}
549 qfitsString = qfits_query_hdr (inFitsName,
"HIERARCH ESO COU AO1 FWHM_MEAN");
550 if (qfitsString == NULL)
551 fprintf (midiQcLogPtr,
"COU.AO1.FWHM_MEAN %s \n", emptyString);
552 else {cleanUpString (qfitsString, cleanString);
553 fprintf (midiQcLogPtr,
"COU.AO1.FWHM_MEAN %s \n", cleanString);}
555 qfitsString = qfits_query_hdr (inFitsName,
"HIERARCH ESO COU AO2 FWHM_MEAN");
556 if (qfitsString == NULL)
557 fprintf (midiQcLogPtr,
"COU.AO2.FWHM_MEAN %s \n", emptyString);
558 else {cleanUpString (qfitsString, cleanString);
559 fprintf (midiQcLogPtr,
"COU.AO2.FWHM_MEAN %s \n", cleanString);}
561 qfitsString = qfits_query_hdr (inFitsName,
"HIERARCH ESO COU AO1 FWHM_RMS");
562 if (qfitsString == NULL)
563 fprintf (midiQcLogPtr,
"COU.AO1.FWHM_RMS %s \n", emptyString);
564 else {cleanUpString (qfitsString, cleanString);
565 fprintf (midiQcLogPtr,
"COU.AO1.FWHM_RMS %s \n", cleanString);}
567 qfitsString = qfits_query_hdr (inFitsName,
"HIERARCH ESO COU AO2 FWHM_RMS");
568 if (qfitsString == NULL)
569 fprintf (midiQcLogPtr,
"COU.AO2.FWHM_RMS %s \n", emptyString);
570 else {cleanUpString (qfitsString, cleanString);
571 fprintf (midiQcLogPtr,
"COU.AO2.FWHM_RMS %s \n", cleanString);}
573 qfitsString = qfits_query_hdr (inFitsName,
"HIERARCH ESO COU AO1 L0_MEAN");
574 if (qfitsString == NULL)
575 fprintf (midiQcLogPtr,
"COU.AO1.L0_MEAN %s \n", emptyString);
576 else {cleanUpString (qfitsString, cleanString);
577 fprintf (midiQcLogPtr,
"COU.AO1.L0_MEAN %s \n", cleanString);}
579 qfitsString = qfits_query_hdr (inFitsName,
"HIERARCH ESO COU AO2 L0_MEAN");
580 if (qfitsString == NULL)
581 fprintf (midiQcLogPtr,
"COU.AO2.L0_MEAN %s \n", emptyString);
582 else {cleanUpString (qfitsString, cleanString);
583 fprintf (midiQcLogPtr,
"COU.AO2.L0_MEAN %s \n", cleanString);}
585 qfitsString = qfits_query_hdr (inFitsName,
"HIERARCH ESO COU AO1 L0_RMS");
586 if (qfitsString == NULL)
587 fprintf (midiQcLogPtr,
"COU.AO1.L0_RMS %s \n", emptyString);
588 else {cleanUpString (qfitsString, cleanString);
589 fprintf (midiQcLogPtr,
"COU.AO1.L0_RMS %s \n", cleanString);}
591 qfitsString = qfits_query_hdr (inFitsName,
"HIERARCH ESO COU AO2 L0_RMS");
592 if (qfitsString == NULL)
593 fprintf (midiQcLogPtr,
"COU.AO2.L0_RMS %s \n", emptyString);
594 else {cleanUpString (qfitsString, cleanString);
595 fprintf (midiQcLogPtr,
"COU.AO2.L0_RMS %s \n", cleanString);}
597 qfitsString = qfits_query_hdr (inFitsName,
"HIERARCH ESO COU AO1 R0_MEAN");
598 if (qfitsString == NULL)
599 fprintf (midiQcLogPtr,
"COU.AO1.R0_MEAN %s \n", emptyString);
600 else {cleanUpString (qfitsString, cleanString);
601 fprintf (midiQcLogPtr,
"COU.AO1.R0_MEAN %s \n", cleanString);}
603 qfitsString = qfits_query_hdr (inFitsName,
"HIERARCH ESO COU AO2 R0_MEAN");
604 if (qfitsString == NULL)
605 fprintf (midiQcLogPtr,
"COU.AO2.R0_MEAN %s \n", emptyString);
606 else {cleanUpString (qfitsString, cleanString);
607 fprintf (midiQcLogPtr,
"COU.AO2.R0_MEAN %s \n", cleanString);}
609 qfitsString = qfits_query_hdr (inFitsName,
"HIERARCH ESO COU AO1 R0_RMS");
610 if (qfitsString == NULL)
611 fprintf (midiQcLogPtr,
"COU.AO1.R0_RMS %s \n", emptyString);
612 else {cleanUpString (qfitsString, cleanString);
613 fprintf (midiQcLogPtr,
"COU.AO1.R0_RMS %s \n", cleanString);}
615 qfitsString = qfits_query_hdr (inFitsName,
"HIERARCH ESO COU AO2 R0_RMS");
616 if (qfitsString == NULL)
617 fprintf (midiQcLogPtr,
"COU.AO2.R0_RMS %s \n", emptyString);
618 else {cleanUpString (qfitsString, cleanString);
619 fprintf (midiQcLogPtr,
"COU.AO2.R0_RMS %s \n", cleanString);}
621 qfitsString = qfits_query_hdr (inFitsName,
"HIERARCH ESO COU AO1 T0_MEAN");
622 if (qfitsString == NULL)
623 fprintf (midiQcLogPtr,
"COU.AO1.T0_MEAN %s \n", emptyString);
624 else {cleanUpString (qfitsString, cleanString);
625 fprintf (midiQcLogPtr,
"COU.AO1.T0_MEAN %s \n", cleanString);}
627 qfitsString = qfits_query_hdr (inFitsName,
"HIERARCH ESO COU AO2 T0_MEAN");
628 if (qfitsString == NULL)
629 fprintf (midiQcLogPtr,
"COU.AO2.T0_MEAN %s \n", emptyString);
630 else {cleanUpString (qfitsString, cleanString);
631 fprintf (midiQcLogPtr,
"COU.AO2.T0_MEAN %s \n", cleanString);}
633 qfitsString = qfits_query_hdr (inFitsName,
"HIERARCH ESO COU AO1 T0_RMS");
634 if (qfitsString == NULL)
635 fprintf (midiQcLogPtr,
"COU.AO1.T0_RMS %s \n", emptyString);
636 else {cleanUpString (qfitsString, cleanString);
637 fprintf (midiQcLogPtr,
"COU.AO1.T0_RMS %s \n", cleanString);}
639 qfitsString = qfits_query_hdr (inFitsName,
"HIERARCH ESO COU AO2 T0_RMS");
640 if (qfitsString == NULL)
641 fprintf (midiQcLogPtr,
"COU.AO2.T0_RMS %s \n", emptyString);
642 else {cleanUpString (qfitsString, cleanString);
643 fprintf (midiQcLogPtr,
"COU.AO2.T0_RMS %s \n", cleanString);}
645 qfitsString = qfits_query_hdr (inFitsName,
"HIERARCH ESO DET CHIP NX");
646 if (qfitsString == NULL)
647 fprintf (midiQcLogPtr,
"DET.CHIP.NX %s \n", emptyString);
648 else {cleanUpString (qfitsString, cleanString);
649 fprintf (midiQcLogPtr,
"DET.CHIP.NX %s \n", cleanString);}
651 qfitsString = qfits_query_hdr (inFitsName,
"HIERARCH ESO DET CHIP NY");
652 if (qfitsString == NULL)
653 fprintf (midiQcLogPtr,
"DET.CHIP.NY %s \n", emptyString);
654 else {cleanUpString (qfitsString, cleanString);
655 fprintf (midiQcLogPtr,
"DET.CHIP.NY %s \n", cleanString);}
657 qfitsString = qfits_query_hdr (inFitsName,
"HIERARCH ESO DET DIT");
658 if (qfitsString == NULL)
659 fprintf (midiQcLogPtr,
"DET.DIT %s \n", emptyString);
660 else {cleanUpString (qfitsString, cleanString);
661 fprintf (midiQcLogPtr,
"DET.DIT %s \n", cleanString);}
663 qfitsString = qfits_query_hdr (inFitsName,
"HIERARCH ESO DET DITDELAY");
664 if (qfitsString == NULL)
665 fprintf (midiQcLogPtr,
"DET.DITDELAY %s \n", emptyString);
666 else {cleanUpString (qfitsString, cleanString);
667 fprintf (midiQcLogPtr,
"DET.DITDELAY %s \n", cleanString);}
669 qfitsString = qfits_query_hdr (inFitsName,
"HIERARCH ESO DET INT MODE");
670 if (qfitsString == NULL)
671 fprintf (midiQcLogPtr,
"DET.INT.MODE %s \n", emptyString);
672 else {cleanUpString (qfitsString, cleanString);
673 fprintf (midiQcLogPtr,
"DET.INT.MODE \"%s\" \n", cleanString);}
675 qfitsString = qfits_query_hdr (inFitsName,
"HIERARCH ESO DET NDIT");
676 if (qfitsString == NULL)
677 fprintf (midiQcLogPtr,
"DET.NDIT %s \n", emptyString);
678 else {cleanUpString (qfitsString, cleanString);
679 fprintf (midiQcLogPtr,
"DET.NDIT %s \n", cleanString);}
681 qfitsString = qfits_query_hdr (inFitsName,
"HIERARCH ESO DET NRTS MODE");
682 if (qfitsString == NULL)
683 fprintf (midiQcLogPtr,
"DET.NRTS.MODE %s \n", emptyString);
684 else {cleanUpString (qfitsString, cleanString);
685 fprintf (midiQcLogPtr,
"DET.NRTS.MODE \"%s\" \n", cleanString);}
687 qfitsString = qfits_query_hdr (inFitsName,
"HIERARCH ESO DET WIN1 NX");
688 if (qfitsString == NULL)
689 fprintf (midiQcLogPtr,
"DET.WIN1.NX %s \n", emptyString);
690 else {cleanUpString (qfitsString, cleanString);
691 fprintf (midiQcLogPtr,
"DET.WIN1.NX %s \n", cleanString);}
693 qfitsString = qfits_query_hdr (inFitsName,
"HIERARCH ESO DET WIN1 NY");
694 if (qfitsString == NULL)
695 fprintf (midiQcLogPtr,
"DET.WIN1.NY %s \n", emptyString);
696 else {cleanUpString (qfitsString, cleanString);
697 fprintf (midiQcLogPtr,
"DET.WIN1.NY %s \n", cleanString);}
699 qfitsString = qfits_query_hdr (inFitsName,
"HIERARCH ESO DET WIN2 NX");
700 if (qfitsString == NULL)
701 fprintf (midiQcLogPtr,
"DET.WIN2.NX %s \n", emptyString);
702 else {cleanUpString (qfitsString, cleanString);
703 fprintf (midiQcLogPtr,
"DET.WIN2.NX %s \n", cleanString);}
705 qfitsString = qfits_query_hdr (inFitsName,
"HIERARCH ESO DET WIN2 NY");
706 if (qfitsString == NULL)
707 fprintf (midiQcLogPtr,
"DET.WIN2.NY %s \n", emptyString);
708 else {cleanUpString (qfitsString, cleanString);
709 fprintf (midiQcLogPtr,
"DET.WIN2.NY %s \n", cleanString);}
711 qfitsString = qfits_query_hdr (inFitsName,
"HIERARCH ESO DPR CATG");
712 if (qfitsString == NULL)
713 fprintf (midiQcLogPtr,
"DPR.CATG %s \n", emptyString);
714 else {cleanUpString (qfitsString, cleanString);
715 fprintf (midiQcLogPtr,
"DPR.CATG \"%s\" \n", cleanString);}
717 qfitsString = qfits_query_hdr (inFitsName,
"HIERARCH ESO DPR TECH");
718 if (qfitsString == NULL)
719 fprintf (midiQcLogPtr,
"DPR.TECH %s \n", emptyString);
720 else {cleanUpString (qfitsString, cleanString);
721 fprintf (midiQcLogPtr,
"DPR.TECH \"%s\" \n", cleanString);}
723 qfitsString = qfits_query_hdr (inFitsName,
"HIERARCH ESO DPR TYPE");
724 if (qfitsString == NULL)
725 fprintf (midiQcLogPtr,
"DPR.TYPE %s \n", emptyString);
726 else {cleanUpString (qfitsString, cleanString);
727 fprintf (midiQcLogPtr,
"DPR.TYPE \"%s\" \n", cleanString);}
729 qfitsString = qfits_query_hdr (inFitsName,
"HIERARCH ESO INS CAM NAME");
730 if (qfitsString == NULL)
731 fprintf (midiQcLogPtr,
"INS.CAM.NAME %s \n", emptyString);
732 else {cleanUpString (qfitsString, cleanString);
733 fprintf (midiQcLogPtr,
"INS.CAM.NAME \"%s\" \n", cleanString);}
735 qfitsString = qfits_query_hdr (inFitsName,
"HIERARCH ESO INS FILT NAME");
736 if (qfitsString == NULL)
737 fprintf (midiQcLogPtr,
"INS.FILT.NAME %s \n", emptyString);
738 else {cleanUpString (qfitsString, cleanString);
739 fprintf (midiQcLogPtr,
"INS.FILT.NAME \"%s\" \n", cleanString);}
741 qfitsString = qfits_query_hdr (inFitsName,
"HIERARCH ESO INS GRIS NAME");
742 if (qfitsString == NULL)
743 fprintf (midiQcLogPtr,
"INS.GRIS.NAME %s \n", emptyString);
744 else {cleanUpString (qfitsString, cleanString);
745 fprintf (midiQcLogPtr,
"INS.GRIS.NAME \"%s\" \n", cleanString);}
747 qfitsString = qfits_query_hdr (inFitsName,
"HIERARCH ESO INS MODE");
748 if (qfitsString == NULL)
749 fprintf (midiQcLogPtr,
"INS.MODE %s \n", emptyString);
750 else {cleanUpString (qfitsString, cleanString);
751 fprintf (midiQcLogPtr,
"INS.MODE \"%s\" \n", cleanString);}
753 qfitsString = qfits_query_hdr (inFitsName,
"HIERARCH ESO INS OPT1 NAME");
754 if (qfitsString == NULL)
755 fprintf (midiQcLogPtr,
"INS.OPT1.NAME %s \n", emptyString);
756 else {cleanUpString (qfitsString, cleanString);
757 fprintf (midiQcLogPtr,
"INS.OPT1.NAME \"%s\" \n", cleanString);}
759 qfitsString = qfits_query_hdr (inFitsName,
"HIERARCH ESO INS OPT1 TYPE");
760 if (qfitsString == NULL)
761 fprintf (midiQcLogPtr,
"INS.OPT1.TYPE %s \n", emptyString);
762 else {cleanUpString (qfitsString, cleanString);
763 fprintf (midiQcLogPtr,
"INS.OPT1.TYPE \"%s\" \n", cleanString);}
765 qfitsString = qfits_query_hdr (inFitsName,
"HIERARCH ESO INS SHUT NAME");
766 if (qfitsString == NULL)
767 fprintf (midiQcLogPtr,
"INS.SHUT.NAME %s \n", emptyString);
768 else {cleanUpString (qfitsString, cleanString);
769 fprintf (midiQcLogPtr,
"INS.SHUT.NAME \"%s\" \n", cleanString);}
771 qfitsString = qfits_query_hdr (inFitsName,
"HIERARCH ESO INS SLIT NAME");
772 if (qfitsString == NULL)
773 fprintf (midiQcLogPtr,
"INS.SLIT.NAME %s \n", emptyString);
774 else {cleanUpString (qfitsString, cleanString);
775 fprintf (midiQcLogPtr,
"INS.SLIT.NAME \"%s\" \n", cleanString);}
777 qfitsString = qfits_query_hdr (inFitsName,
"HIERARCH ESO ISS AIRM END");
778 if (qfitsString == NULL)
779 fprintf (midiQcLogPtr,
"ISS.AIRM.END %s \n", emptyString);
780 else {cleanUpString (qfitsString, cleanString);
781 fprintf (midiQcLogPtr,
"ISS.AIRM.END %s \n", cleanString);}
783 qfitsString = qfits_query_hdr (inFitsName,
"HIERARCH ESO ISS AIRM START");
784 if (qfitsString == NULL)
785 fprintf (midiQcLogPtr,
"ISS.AIRM.START %s \n", emptyString);
786 else {cleanUpString (qfitsString, cleanString);
787 fprintf (midiQcLogPtr,
"ISS.AIRM.START %s \n", cleanString);}
789 qfitsString = qfits_query_hdr (inFitsName,
"HIERARCH ESO ISS ALT");
790 if (qfitsString == NULL)
791 fprintf (midiQcLogPtr,
"ISS.ALT %s \n", emptyString);
792 else {cleanUpString (qfitsString, cleanString);
793 fprintf (midiQcLogPtr,
"ISS.ALT %s \n", cleanString);}
795 qfitsString = qfits_query_hdr (inFitsName,
"HIERARCH ESO ISS AMBI FWHM END");
796 if (qfitsString == NULL)
797 fprintf (midiQcLogPtr,
"ISS.AMBI.FWHM.END %s \n", emptyString);
798 else {cleanUpString (qfitsString, cleanString);
799 fprintf (midiQcLogPtr,
"ISS.AMBI.FWHM.END %s \n", cleanString);}
801 qfitsString = qfits_query_hdr (inFitsName,
"HIERARCH ESO ISS AMBI FWHM START");
802 if (qfitsString == NULL)
803 fprintf (midiQcLogPtr,
"ISS.AMBI.FWHM.START %s \n", emptyString);
804 else {cleanUpString (qfitsString, cleanString);
805 fprintf (midiQcLogPtr,
"ISS.AMBI.FWHM.START %s \n", cleanString);}
807 qfitsString = qfits_query_hdr (inFitsName,
"HIERARCH ESO ISS AMBI PRES");
808 if (qfitsString == NULL)
809 fprintf (midiQcLogPtr,
"ISS.AMBI.PRES %s \n", emptyString);
810 else {cleanUpString (qfitsString, cleanString);
811 fprintf (midiQcLogPtr,
"ISS.AMBI.PRES %s \n", cleanString);}
813 qfitsString = qfits_query_hdr (inFitsName,
"HIERARCH ESO ISS AMBI RHUM");
814 if (qfitsString == NULL)
815 fprintf (midiQcLogPtr,
"ISS.AMBI.RHUM %s \n", emptyString);
816 else {cleanUpString (qfitsString, cleanString);
817 fprintf (midiQcLogPtr,
"ISS.AMBI.RHUM %s \n", cleanString);}
819 qfitsString = qfits_query_hdr (inFitsName,
"HIERARCH ESO ISS AMBI TAU0 END");
820 if (qfitsString == NULL)
821 fprintf (midiQcLogPtr,
"ISS.AMBI.TAU0.END %s \n", emptyString);
822 else {cleanUpString (qfitsString, cleanString);
823 fprintf (midiQcLogPtr,
"ISS.AMBI.TAU0.END %s \n", cleanString);}
825 qfitsString = qfits_query_hdr (inFitsName,
"HIERARCH ESO ISS AMBI TAU0 START");
826 if (qfitsString == NULL)
827 fprintf (midiQcLogPtr,
"ISS.AMBI.TAU0.START %s \n", emptyString);
828 else {cleanUpString (qfitsString, cleanString);
829 fprintf (midiQcLogPtr,
"ISS.AMBI.TAU0.START %s \n", cleanString);}
831 qfitsString = qfits_query_hdr (inFitsName,
"HIERARCH ESO ISS AMBI TEMP");
832 if (qfitsString == NULL)
833 fprintf (midiQcLogPtr,
"ISS.AMBI.TEMP %s \n", emptyString);
834 else {cleanUpString (qfitsString, cleanString);
835 fprintf (midiQcLogPtr,
"ISS.AMBI.TEMP %s \n", cleanString);}
837 qfitsString = qfits_query_hdr (inFitsName,
"HIERARCH ESO ISS AMBI WINDDIR");
838 if (qfitsString == NULL)
839 fprintf (midiQcLogPtr,
"ISS.AMBI.WINDDIR %s \n", emptyString);
840 else {cleanUpString (qfitsString, cleanString);
841 fprintf (midiQcLogPtr,
"ISS.AMBI.WINDDIR %s \n", cleanString);}
843 qfitsString = qfits_query_hdr (inFitsName,
"HIERARCH ESO ISS AMBI WINDSP");
844 if (qfitsString == NULL)
845 fprintf (midiQcLogPtr,
"ISS.AMBI.WINDSP %s \n", emptyString);
846 else {cleanUpString (qfitsString, cleanString);
847 fprintf (midiQcLogPtr,
"ISS.AMBI.WINDSP %s \n", cleanString);}
849 qfitsString = qfits_query_hdr (inFitsName,
"HIERARCH ESO ISS AZ");
850 if (qfitsString == NULL)
851 fprintf (midiQcLogPtr,
"ISS.AZ %s \n", emptyString);
852 else {cleanUpString (qfitsString, cleanString);
853 fprintf (midiQcLogPtr,
"ISS.AZ %s \n", cleanString);}
855 qfitsString = qfits_query_hdr (inFitsName,
"HIERARCH ESO ISS CONF STATION1");
856 if (qfitsString == NULL)
857 fprintf (midiQcLogPtr,
"ISS.CONF.STATION1 %s \n", emptyString);
858 else {cleanUpString (qfitsString, cleanString);
859 fprintf (midiQcLogPtr,
"ISS.CONF.STATION1 \"%s\" \n", cleanString);}
861 qfitsString = qfits_query_hdr (inFitsName,
"HIERARCH ESO ISS CONF STATION2");
862 if (qfitsString == NULL)
863 fprintf (midiQcLogPtr,
"ISS.CONF.STATION2 %s \n", emptyString);
864 else {cleanUpString (qfitsString, cleanString);
865 fprintf (midiQcLogPtr,
"ISS.CONF.STATION2 \"%s\" \n", cleanString);}
867 qfitsString = qfits_query_hdr (inFitsName,
"HIERARCH ESO ISS CONF T1X");
868 if (qfitsString == NULL)
869 fprintf (midiQcLogPtr,
"ISS.CONF.T1X %s \n", emptyString);
870 else {cleanUpString (qfitsString, cleanString);
871 fprintf (midiQcLogPtr,
"ISS.CONF.T1X %s \n", cleanString);}
873 qfitsString = qfits_query_hdr (inFitsName,
"HIERARCH ESO ISS CONF T1Y");
874 if (qfitsString == NULL)
875 fprintf (midiQcLogPtr,
"ISS.CONF.T1Y %s \n", emptyString);
876 else {cleanUpString (qfitsString, cleanString);
877 fprintf (midiQcLogPtr,
"ISS.CONF.T1Y %s \n", cleanString);}
879 qfitsString = qfits_query_hdr (inFitsName,
"HIERARCH ESO ISS CONF T1Z");
880 if (qfitsString == NULL)
881 fprintf (midiQcLogPtr,
"ISS.CONF.T1Z %s \n", emptyString);
882 else {cleanUpString (qfitsString, cleanString);
883 fprintf (midiQcLogPtr,
"ISS.CONF.T1Z %s \n", cleanString);}
885 qfitsString = qfits_query_hdr (inFitsName,
"HIERARCH ESO ISS CONF T2X");
886 if (qfitsString == NULL)
887 fprintf (midiQcLogPtr,
"ISS.CONF.T2X %s \n", emptyString);
888 else {cleanUpString (qfitsString, cleanString);
889 fprintf (midiQcLogPtr,
"ISS.CONF.T2X %s \n", cleanString);}
891 qfitsString = qfits_query_hdr (inFitsName,
"HIERARCH ESO ISS CONF T2Y");
892 if (qfitsString == NULL)
893 fprintf (midiQcLogPtr,
"ISS.CONF.T2Y %s \n", emptyString);
894 else {cleanUpString (qfitsString, cleanString);
895 fprintf (midiQcLogPtr,
"ISS.CONF.T2Y %s \n", cleanString);}
897 qfitsString = qfits_query_hdr (inFitsName,
"HIERARCH ESO ISS CONF T2Z");
898 if (qfitsString == NULL)
899 fprintf (midiQcLogPtr,
"ISS.CONF.T2Z %s \n", emptyString);
900 else {cleanUpString (qfitsString, cleanString);
901 fprintf (midiQcLogPtr,
"ISS.CONF.T2Z %s \n", cleanString);}
903 qfitsString = qfits_query_hdr (inFitsName,
"HIERARCH ESO ISS PARANG END");
904 if (qfitsString == NULL)
905 fprintf (midiQcLogPtr,
"ISS.PARANG.END %s \n", emptyString);
906 else {cleanUpString (qfitsString, cleanString);
907 fprintf (midiQcLogPtr,
"ISS.PARANG.END %s \n", cleanString);}
909 qfitsString = qfits_query_hdr (inFitsName,
"HIERARCH ESO ISS PARANG START");
910 if (qfitsString == NULL)
911 fprintf (midiQcLogPtr,
"ISS.PARANG.START %s \n", emptyString);
912 else {cleanUpString (qfitsString, cleanString);
913 fprintf (midiQcLogPtr,
"ISS.PARANG.START %s \n", cleanString);}
915 qfitsString = qfits_query_hdr (inFitsName,
"HIERARCH ESO ISS PBL12 END");
916 if (qfitsString == NULL)
917 fprintf (midiQcLogPtr,
"ISS.PBL12.END %s \n", emptyString);
918 else {cleanUpString (qfitsString, cleanString);
919 fprintf (midiQcLogPtr,
"ISS.PBL12.END %s \n", cleanString);}
921 qfitsString = qfits_query_hdr (inFitsName,
"HIERARCH ESO ISS PBL12 START");
922 if (qfitsString == NULL)
923 fprintf (midiQcLogPtr,
"ISS.PBL12.START %s \n", emptyString);
924 else {cleanUpString (qfitsString, cleanString);
925 fprintf (midiQcLogPtr,
"ISS.PBL12.START %s \n", cleanString);}
927 qfitsString = qfits_query_hdr (inFitsName,
"HIERARCH ESO OBS ID");
928 if (qfitsString == NULL)
929 fprintf (midiQcLogPtr,
"OBS.ID %s \n", emptyString);
930 else {cleanUpString (qfitsString, cleanString);
931 fprintf (midiQcLogPtr,
"OBS.ID \"%s\" \n", cleanString);}
933 qfitsString = qfits_query_hdr (inFitsName,
"HIERARCH ESO OBS NAME");
934 if (qfitsString == NULL)
935 fprintf (midiQcLogPtr,
"OBS.NAME %s \n", emptyString);
936 else {cleanUpString (qfitsString, cleanString);
937 fprintf (midiQcLogPtr,
"OBS.NAME \"%s\" \n", cleanString);}
939 qfitsString = qfits_query_hdr (inFitsName,
"HIERARCH ESO OBS PI-COI ID");
940 if (qfitsString == NULL)
941 fprintf (midiQcLogPtr,
"OBS.PI-COI.ID %s \n", emptyString);
942 else {cleanUpString (qfitsString, cleanString);
943 fprintf (midiQcLogPtr,
"OBS.PI-COI.ID \"%s\" \n", cleanString);}
945 qfitsString = qfits_query_hdr (inFitsName,
"HIERARCH ESO OBS PI-COI NAME");
946 if (qfitsString == NULL)
947 fprintf (midiQcLogPtr,
"OBS.PI-COI.NAME %s \n", emptyString);
948 else {cleanUpString (qfitsString, cleanString);
949 fprintf (midiQcLogPtr,
"OBS.PI-COI.NAME \"%s\" \n", cleanString);}
951 qfitsString = qfits_query_hdr (inFitsName,
"HIERARCH ESO OBS PROG ID");
952 if (qfitsString == NULL)
953 fprintf (midiQcLogPtr,
"OBS.PROG.ID %s \n", emptyString);
954 else {cleanUpString (qfitsString, cleanString);
955 fprintf (midiQcLogPtr,
"OBS.PROG.ID \"%s\" \n", cleanString);}
957 qfitsString = qfits_query_hdr (inFitsName,
"HIERARCH ESO OBS START");
958 if (qfitsString == NULL)
959 fprintf (midiQcLogPtr,
"OBS.START %s \n", emptyString);
960 else {cleanUpString (qfitsString, cleanString);
961 fprintf (midiQcLogPtr,
"OBS.START \"%s\" \n", cleanString);}
963 qfitsString = qfits_query_hdr (inFitsName,
"HIERARCH ESO OBS TARG NAME");
964 if (qfitsString == NULL)
965 fprintf (midiQcLogPtr,
"OBS.TARG.NAME %s \n", emptyString);
966 else {cleanUpString (qfitsString, cleanString);
967 fprintf (midiQcLogPtr,
"OBS.TARG.NAME \"%s\" \n", cleanString);}
969 qfitsString = qfits_query_hdr (inFitsName,
"HIERARCH ESO OCS EXPO1 FNAME1");
970 if (qfitsString == NULL)
971 fprintf (midiQcLogPtr,
"OCS.EXPO1.FNAME1 %s \n", emptyString);
972 else {cleanUpString (qfitsString, cleanString);
973 fprintf (midiQcLogPtr,
"OCS.EXPO1.FNAME1 \"%s\" \n", cleanString);}
975 qfitsString = qfits_query_hdr (inFitsName,
"HIERARCH ESO TPL ID");
976 if (qfitsString == NULL)
977 fprintf (midiQcLogPtr,
"TPL.ID %s \n", emptyString);
978 else {cleanUpString (qfitsString, cleanString);
979 fprintf (midiQcLogPtr,
"TPL.ID \"%s\" \n", cleanString);}
981 qfitsString = qfits_query_hdr (inFitsName,
"HIERARCH ESO TPL START");
982 if (qfitsString == NULL)
983 fprintf (midiQcLogPtr,
"TPL.START %s \n", emptyString);
984 else {cleanUpString (qfitsString, cleanString);
985 fprintf (midiQcLogPtr,
"TPL.START \"%s\" \n", cleanString);}
1009 void addProdInfoToKappaQcLog (
1010 ImageFormat *format,
1011 MidiFiles *fileNames,
1012 TransferRatios *trRatios,
1018 const char routine[] =
"addProdInfoToKappaQcLog";
1020 FILE *inFitsBatchPtr;
1021 char *stringQfits, *messageBuffer, *currentTime, *textBuff, *cleanString,
1022 *stringTemp, *classification;
1028 if (diagnostic > 4)cpl_msg_info(cpl_func,
"Invoking routine '%s' \n", routine);
1029 if (diagnostic > 4) fprintf (midiReportPtr,
"Invoking routine '%s' \n", routine);
1035 classification = (
char *) calloc (MAX_STRING_LENGTH,
sizeof (
char));
1036 stringTemp = (
char *) calloc (MAX_STRING_LENGTH,
sizeof (
char));
1037 cleanString = (
char *) calloc (MAX_STRING_LENGTH,
sizeof (
char));
1038 textBuff = (
char *) calloc (MAX_STRING_LENGTH,
sizeof (
char));
1039 messageBuffer = (
char *) calloc (MAX_STRING_LENGTH,
sizeof (
char));
1040 currentTime = (
char *) calloc (MIN_STRING_LENGTH,
sizeof (
char));
1044 newTime = gmtime (&now);
1045 strftime (currentTime, MIN_STRING_LENGTH,
"%a %d %b %Y at %H:%M:%S", newTime);
1048 fprintf (midiQcLogPtr,
"PRO.TYPE \"%s\" \n", format->obsType);
1049 fprintf (midiQcLogPtr,
"PRO.CATG \"KAPPA_MATRIX\" \n");
1050 fprintf (midiQcLogPtr,
"PRO.ARCFILE \"%s\" \n", fileNames->archFileName);
1051 fprintf (midiQcLogPtr,
"PRO.PIPEDATE \"%s\" \n", currentTime);
1052 fprintf (midiQcLogPtr,
"PRO.VERSION \"%s\" \n", MIDI_PIPE_VERSION);
1053 fprintf (midiQcLogPtr,
"PRO.PIPEFILE \"%s\" \n", fileNames->pipeFileName);
1054 fprintf (midiQcLogPtr,
"PRO.DID \"%s\" \n", MIDI_QC_DIC_VERSION);
1057 if ((inFitsBatchPtr = fopen (fileNames->inFitsBatch,
"r")) == NULL)
1060 midiReportWarning (midiReportPtr, routine, __FILE__, __LINE__,
"Cannot open input FITS file list");
1061 free (messageBuffer);
1065 free (classification);
1070 fprintf (midiQcLogPtr,
"QC.KAPPA_EXISTS %d \n", trRatios->exists);
1071 if (trRatios->exists)
1073 for (i = 0; i < format->iXWidth; i++)
1075 if (badChannelList[i])
1077 fprintf (midiQcLogPtr,
"QC.KA1.CH%d %s \n", i, UNAV);
1078 fprintf (midiQcLogPtr,
"QC.SIGA1.CH%d %s \n", i, UNAV);
1079 fprintf (midiQcLogPtr,
"QC.KA2.CH%d %s \n", i, UNAV);
1080 fprintf (midiQcLogPtr,
"QC.SIGA2.CH%d %s \n", i, UNAV);
1081 fprintf (midiQcLogPtr,
"QC.KB1.CH%d %s \n", i, UNAV);
1082 fprintf (midiQcLogPtr,
"QC.SIGB1.CH%d %s \n", i, UNAV);
1083 fprintf (midiQcLogPtr,
"QC.KB2.CH%d %s \n", i, UNAV);
1084 fprintf (midiQcLogPtr,
"QC.SIGB2.CH%d %s \n", i, UNAV);
1088 fprintf (midiQcLogPtr,
"QC.KA1.CH%d %f \n", i, trRatios->ka1[i]);
1089 fprintf (midiQcLogPtr,
"QC.SIGA1.CH%d %f \n", i, trRatios->siga1[i]);
1090 fprintf (midiQcLogPtr,
"QC.KA2.CH%d %f \n", i, trRatios->ka2[i]);
1091 fprintf (midiQcLogPtr,
"QC.SIGA2.CH%d %f \n", i, trRatios->siga2[i]);
1092 fprintf (midiQcLogPtr,
"QC.KB1.CH%d %f \n", i, trRatios->kb1[i]);
1093 fprintf (midiQcLogPtr,
"QC.SIGB1.CH%d %f \n", i, trRatios->sigb1[i]);
1094 fprintf (midiQcLogPtr,
"QC.KB2.CH%d %f \n", i, trRatios->kb2[i]);
1095 fprintf (midiQcLogPtr,
"QC.SIGB2.CH%d %f \n", i, trRatios->sigb2[i]);
1102 while (fgets (stringTemp, MAX_STRING_LENGTH, inFitsBatchPtr) != NULL)
1104 sprintf (classification,
"%s",
"");
1105 sscanf (stringTemp,
"%s%s", messageBuffer, classification);
1108 if (strcmp (classification,
"") == 0)
1110 stringQfits = qfits_query_hdr (messageBuffer,
"HIERARCH ESO DPR CATG");
1111 if (stringQfits == NULL)
1113 sprintf (classification,
"%s",
"UNKNOWN");
1114 midiReportWarning (midiReportPtr, routine, __FILE__, __LINE__,
"Cannot get Observation Category");
1118 cleanUpString (stringQfits, cleanString);
1119 sprintf (classification,
"%s", cleanString);
1122 removePathName (messageBuffer, midiReportPtr);
1123 fprintf (midiQcLogPtr,
"PRO.REC1.RAW%d.NAME \"%s\" \n", i, messageBuffer);
1124 fprintf (midiQcLogPtr,
"PRO.REC1.RAW%d.CATG \"%s\" \n", i++, classification);
1126 fclose (inFitsBatchPtr);
1129 free (messageBuffer);
1134 free (classification);
1154 void createTransferRatiosFile (
1156 ImageFormat *format,
1157 MidiFiles *fileNames,
1158 TransferRatios *trRatios,
1164 const char routine[] =
"createTransferRatiosFile";
1165 FILE *trrPtr=NULL, *trrHistoryPtr=NULL;
1172 if (diagnostic > 4)cpl_msg_info(cpl_func,
"Invoking routine '%s' \n", routine);
1173 if (diagnostic > 4) fprintf(midiReportPtr,
"Invoking routine '%s' \n", routine);
1178 if (!(trRatios->exists))
1180 midiReportWarning (midiReportPtr, routine, __FILE__, __LINE__,
"Cannot create Transfer Ratios file");
1186 if (stat (fileNames->trrNameWrite, &buf) == 0)
1187 remove (fileNames->trrNameWrite);
1190 if ((trrPtr = fopen (fileNames->trrNameWrite,
"w")) == NULL)
1192 midiReportWarning (midiReportPtr, routine, __FILE__, __LINE__,
"Cannot open file to store transfer matrix");
1198 trrHistoryPtr = fopen (fileNames->trrHistoryName,
"a");
1199 fprintf (trrHistoryPtr,
"Transfer Ratios for batch %d \n", batchNumber);
1200 fprintf (trrHistoryPtr,
"------------------------- \n");
1201 fprintf (trrHistoryPtr,
"Channel ka1 siga1 ka2 siga2 kb1 sigb1 kb2 sigb2 \n");
1204 fprintf (trrPtr,
"%d \n", format->iXWidth);
1205 for (x = 0; x < format->iXWidth; x++)
1207 fprintf (trrPtr,
"%f %f %f %f %f %f %f %f \n", trRatios->ka1[x], trRatios->siga1[x],
1208 trRatios->ka2[x], trRatios->siga2[x], trRatios->kb1[x], trRatios->sigb1[x],
1209 trRatios->kb2[x], trRatios->sigb2[x]);
1210 fprintf (trrHistoryPtr,
"%3d %6.2f %6.2f %6.2f %6.2f %6.2f %6.2f %6.2f %6.2f \n", x,
1211 trRatios->ka1[x], trRatios->siga1[x], trRatios->ka2[x], trRatios->siga2[x],
1212 trRatios->kb1[x], trRatios->sigb1[x], trRatios->kb2[x], trRatios->sigb2[x]);
1216 fclose (trrHistoryPtr);
1217 cpl_msg_info(cpl_func,
"Created Transfer Ratios file %s\n", fileNames->trrNameWrite);
1218 fprintf (midiReportPtr,
"Created Transfer Ratios file %s\n", fileNames->trrNameWrite);
1224 fileString = (
char *) calloc (MAX_STRING_LENGTH,
sizeof (
char));
1225 sprintf (fileString ,
"%s_%s.dat", fileNames->transferRatiosName, format->grismId);
1226 if ((trrPtr = fopen (fileString,
"w")) == NULL)
1228 sprintf (midiMessage,
"Cannot open Transfer Ratios database file %s", fileString);
1229 midiReportWarning (midiReportPtr, routine, __FILE__, __LINE__, midiMessage);
1236 fprintf (trrPtr,
"%d \n", format->iXWidth);
1237 for (x = 0; x < format->iXWidth; x++)
1239 fprintf (trrPtr,
"%f %f %f %f %f %f %f %f \n", trRatios->ka1[x], trRatios->siga1[x],
1240 trRatios->ka2[x], trRatios->siga2[x], trRatios->kb1[x], trRatios->sigb1[x],
1241 trRatios->kb2[x], trRatios->sigb2[x]);
1244 cpl_msg_info(cpl_func,
"Updated Transfer Ratios database \n");
1245 fprintf (midiReportPtr,
"Updated Transfer Ratios database \n");