00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021
00022 #include <sys/stat.h>
00023 #include <stdio.h>
00024 #include <cpl.h>
00025 #include <time.h>
00026 #include "midiGlobal.h"
00027 #include "midiLib.h"
00028 #include "errorHandling.h"
00029 #include "midiFitsUtility.h"
00030 #include "fileHandling.h"
00031 #include "createProdKappa.h"
00032 #include "qfits.h"
00033
00034
00035
00036
00037
00038
00039
00040
00041
00042
00043
00044
00045
00046
00047
00048
00049
00050
00051
00052
00053 void createKappaProd (
00054 int update,
00055 MidiFiles *fileNames,
00056 ImageFormat *size,
00057 TransferRatios *trRatios,
00058 int *error)
00059 {
00060
00061
00062
00063 const char routine[] = "createKappaProd";
00064 float *spkImage;
00065 qfitsdumper qdSpk;
00066
00067
00068
00069 if (diagnostic > 4)cpl_msg_info(cpl_func,"Invoking routine '%s' \n", routine);
00070 if (diagnostic > 4) fprintf(midiReportPtr, "Invoking routine '%s' \n", routine);
00071
00072 cpl_msg_info(cpl_func,"\nCreating Product files for SCI_PHOT_KAPPA from batch %d \n", batchNumber);
00073 cpl_msg_info(cpl_func,"---------------------------------------------------- \n");
00074 fprintf (midiReportPtr, "\nCreating Product files for SCI_PHOT_KAPPA from batch %d \n", batchNumber);
00075 fprintf (midiReportPtr, "---------------------------------------------------- \n");
00076
00077
00078 if (!(*error))
00079 createTransferRatiosFile (update, size, fileNames, trRatios, error);
00080
00081
00082 *error = 0;
00083
00084
00085 createKappaPrimHead (fileNames, size, trRatios, error);
00086 if (*error)
00087 {
00088 midiReportWarning (midiReportPtr, routine, __FILE__, __LINE__, "Cannot create Primary Header extension");
00089 return;
00090 }
00091
00092
00093 spkImage = (float *) calloc (size->iXWidth * size->iYWidth, sizeof (float));
00094 qdSpk.filename = fileNames->outFitsName;
00095 qdSpk.npix = size->iXWidth * size->iYWidth;
00096 qdSpk.ptype = PTYPE_FLOAT;
00097 qdSpk.fbuf = spkImage;
00098 qdSpk.out_ptype = BPP_IEEE_FLOAT;
00099 qfits_pixdump (&qdSpk);
00100 free (spkImage);
00101
00102
00103 createKappaQcLog (fileNames->inFitsName, error);
00104 if (*error) midiReportWarning (midiReportPtr, routine, __FILE__, __LINE__, "Cannot copy keywords to QC log");
00105
00106
00107 addProdInfoToKappaQcLog (size, fileNames, trRatios, error);
00108
00109 return;
00110 }
00111
00112
00113
00114
00115
00116
00117
00118
00119
00120
00121
00122
00123
00124
00125
00126
00127 void createKappaPrimHead (
00128 MidiFiles *fileNames,
00129 ImageFormat *size,
00130 TransferRatios *trRatios,
00131 int *error)
00132 {
00133
00134
00135
00136 const char routine[] = "createKappaPrimHead";
00137 qfits_header *outFitsHeader;
00138 FILE *inFitsBatchPtr=NULL, *outFitsPtr;
00139 int i;
00140 char *textBuff, *stringQfits, *messageBuffer, *currentTime, *cleanString,
00141 *stringTemp, *classification, *sWidthX, *sWidthY;
00142 time_t now;
00143 struct tm *newTime;
00144 struct stat buf;
00145
00146
00147
00148 if (diagnostic > 4)cpl_msg_info(cpl_func,"Invoking routine '%s' \n", routine);
00149 if (diagnostic > 4) fprintf(midiReportPtr, "Invoking routine '%s' \n", routine);
00150
00151
00152 *error = 0;
00153
00154
00155 if ((inFitsBatchPtr = fopen (fileNames->inFitsBatch, "r")) == NULL)
00156 {
00157 midiReportWarning (midiReportPtr, routine, __FILE__, __LINE__, "Cannot open input FITS file list");
00158 *error = 1;
00159 return;
00160 }
00161
00162
00163 textBuff = (char *) calloc (MAX_STRING_LENGTH, sizeof (char));
00164 classification = (char *) calloc (MAX_STRING_LENGTH, sizeof (char));
00165 stringTemp = (char *) calloc (MAX_STRING_LENGTH, sizeof (char));
00166 cleanString = (char *) calloc (MAX_STRING_LENGTH, sizeof (char));
00167 messageBuffer = (char *) calloc (MAX_STRING_LENGTH, sizeof (char));
00168 currentTime = (char *) calloc (MIN_STRING_LENGTH, sizeof (char));
00169 sWidthX = (char *) calloc (MIN_STRING_LENGTH, sizeof (char));
00170 sWidthY = (char *) calloc (MIN_STRING_LENGTH, sizeof (char));
00171
00172
00173 now = time(NULL);
00174 newTime = gmtime (&now);
00175 strftime (currentTime, MIN_STRING_LENGTH, "%a %d %b %Y at %H:%M:%S", newTime);
00176
00177
00178 fgets (stringTemp, MAX_STRING_LENGTH, inFitsBatchPtr);
00179 sprintf (classification, "%s", "");
00180 sscanf (stringTemp, "%s%s", fileNames->inFitsName, classification);
00181
00182
00183 outFitsHeader = qfits_header_read (fileNames->inFitsName);
00184 if (outFitsHeader == NULL)
00185 {
00186 *error = 1;
00187 midiReportWarning (midiReportPtr, routine, __FILE__, __LINE__, "Cannot load header from the input FITS file");
00188 free (messageBuffer);
00189 free (currentTime);
00190 free (cleanString);
00191 free (stringTemp);
00192 free (classification);
00193 free (textBuff);
00194 free (sWidthX);
00195 free (sWidthY);
00196 return;
00197 }
00198
00199
00200 sprintf (sWidthY, "%d", size->iYWidth);
00201 sprintf (sWidthX, "%d", size->iXWidth);
00202
00203
00204 qfits_header_mod (outFitsHeader, "BITPIX", "-32", "number of bits per pixel");
00205 qfits_header_mod (outFitsHeader, "NAXIS", "2", "number of data axes");
00206 qfits_header_add (outFitsHeader, "NAXIS1", sWidthX, "", NULL);
00207 qfits_header_add (outFitsHeader, "NAXIS2", sWidthY, "", NULL);
00208 qfits_header_mod (outFitsHeader, "INSTRUME", "MIDI", "MIDI Raw Data Display FITS created by DRS pipeline" );
00209
00210
00211
00212 qfits_header_add (outFitsHeader, "HIERARCH ESO PRO TYPE", size->obsType, "MIDI pipeline product type", NULL);
00213 qfits_header_add (outFitsHeader, "HIERARCH ESO PRO CATG", "KAPPA_MATRIX", "Pipeline product category", NULL);
00214 qfits_header_add (outFitsHeader, "HIERARCH ESO PRO ARCFILE", fileNames->archFileName, "Arcfile name of first raw file", NULL);
00215 qfits_header_add (outFitsHeader, "HIERARCH ESO PRO PIPEDATE", currentTime, "Pipeline run date", "");
00216 qfits_header_add (outFitsHeader, "HIERARCH ESO PRO VERSION", MIDI_PIPE_VERSION, "Pipeline version", NULL);
00217 qfits_header_add (outFitsHeader, "PIPEFILE", fileNames->pipeFileName, "Pipeline product file name", NULL);
00218 qfits_header_add (outFitsHeader, "HIERARCH ESO PRO DID", MIDI_QC_DIC_VERSION, "QC dictionary version", NULL);
00219
00220
00221 rewind (inFitsBatchPtr);
00222
00223
00224 i = 1;
00225 while (fgets (stringTemp, MAX_STRING_LENGTH, inFitsBatchPtr) != NULL)
00226 {
00227 sprintf (classification, "%s", "");
00228 sscanf (stringTemp, "%s%s", messageBuffer, classification);
00229
00230
00231 if (strcmp (classification, "") == 0)
00232 {
00233 stringQfits = qfits_query_hdr (messageBuffer, "HIERARCH ESO DPR CATG");
00234 if (stringQfits == NULL)
00235 {
00236 sprintf (classification, "%s", "UNKNOWN");
00237 midiReportWarning (midiReportPtr, routine, __FILE__, __LINE__, "Cannot get Observation Category");
00238 }
00239 else
00240 {
00241 cleanUpString (stringQfits, cleanString);
00242 sprintf (classification, "%s", cleanString);
00243 }
00244 }
00245 removePathName (messageBuffer, midiReportPtr);
00246 sprintf (textBuff, "HIERARCH ESO PRO REC1 RAW%d NAME", i);
00247 qfits_header_add (outFitsHeader, textBuff, messageBuffer, "FITS file name", "");
00248 sprintf (textBuff, "HIERARCH ESO PRO REC1 RAW%d CATG", i++);
00249 qfits_header_add (outFitsHeader, textBuff, classification, "Observation Categoty", "");
00250 }
00251 fclose (inFitsBatchPtr);
00252
00253
00254 sprintf (messageBuffer, "%d", trRatios->exists);
00255 qfits_header_add (outFitsHeader, "HIERARCH ESO QC KAPPA_EXISTS", messageBuffer, "1 = Transfer Ratios exist", "");
00256 if (trRatios->exists)
00257 {
00258 for (i = 0; i < size->iXWidth; i++)
00259 {
00260 if (badChannelList[i])
00261 {
00262 sprintf (messageBuffer, "%s", UNAV);
00263 sprintf (textBuff, "HIERARCH ESO QC KA1 CH%d", i);
00264 qfits_header_add (outFitsHeader, textBuff, messageBuffer, "Transfer Ratio", "");
00265 sprintf (messageBuffer, "%s", UNAV);
00266 sprintf (textBuff, "HIERARCH ESO QC SIGA1 CH%d", i);
00267 qfits_header_add (outFitsHeader, textBuff, messageBuffer, "Transfer Ratio Error", "");
00268
00269 sprintf (messageBuffer, "%s", UNAV);
00270 sprintf (textBuff, "HIERARCH ESO QC KA2 CH%d", i);
00271 qfits_header_add (outFitsHeader, textBuff, messageBuffer, "Transfer Ratio", "");
00272 sprintf (messageBuffer, "%s", UNAV);
00273 sprintf (textBuff, "HIERARCH ESO QC SIGA2 CH%d", i);
00274 qfits_header_add (outFitsHeader, textBuff, messageBuffer, "Transfer Ratio Error", "");
00275
00276 sprintf (messageBuffer, "%s", UNAV);
00277 sprintf (textBuff, "HIERARCH ESO QC KB1 CH%d", i);
00278 qfits_header_add (outFitsHeader, textBuff, messageBuffer, "Transfer Ratio", "");
00279 sprintf (messageBuffer, "%s", UNAV);
00280 sprintf (textBuff, "HIERARCH ESO QC SIGB1 CH%d", i);
00281 qfits_header_add (outFitsHeader, textBuff, messageBuffer, "Transfer Ratio Error", "");
00282
00283 sprintf (messageBuffer, "%s", UNAV);
00284 sprintf (textBuff, "HIERARCH ESO QC KB2 CH%d", i);
00285 qfits_header_add (outFitsHeader, textBuff, messageBuffer, "Transfer Ratio", "");
00286 sprintf (messageBuffer, "%s", UNAV);
00287 sprintf (textBuff, "HIERARCH ESO QC SIGB2 CH%d", i);
00288 qfits_header_add (outFitsHeader, textBuff, messageBuffer, "Transfer Ratio Error", "");
00289 }
00290 else
00291 {
00292 sprintf (messageBuffer, "%f", trRatios->ka1[i]);
00293 sprintf (textBuff, "HIERARCH ESO QC KA1 CH%d", i);
00294 qfits_header_add (outFitsHeader, textBuff, messageBuffer, "Transfer Ratio", "");
00295 sprintf (messageBuffer, "%f", trRatios->siga1[i]);
00296 sprintf (textBuff, "HIERARCH ESO QC SIGA1 CH%d", i);
00297 qfits_header_add (outFitsHeader, textBuff, messageBuffer, "Transfer Ratio Error", "");
00298
00299 sprintf (messageBuffer, "%f", trRatios->ka2[i]);
00300 sprintf (textBuff, "HIERARCH ESO QC KA2 CH%d", i);
00301 qfits_header_add (outFitsHeader, textBuff, messageBuffer, "Transfer Ratio", "");
00302 sprintf (messageBuffer, "%f", trRatios->siga2[i]);
00303 sprintf (textBuff, "HIERARCH ESO QC SIGA2 CH%d", i);
00304 qfits_header_add (outFitsHeader, textBuff, messageBuffer, "Transfer Ratio Error", "");
00305
00306 sprintf (messageBuffer, "%f", trRatios->kb1[i]);
00307 sprintf (textBuff, "HIERARCH ESO QC KB1 CH%d", i);
00308 qfits_header_add (outFitsHeader, textBuff, messageBuffer, "Transfer Ratio", "");
00309 sprintf (messageBuffer, "%f", trRatios->sigb1[i]);
00310 sprintf (textBuff, "HIERARCH ESO QC SIGB1 CH%d", i);
00311 qfits_header_add (outFitsHeader, textBuff, messageBuffer, "Transfer Ratio Error", "");
00312
00313 sprintf (messageBuffer, "%f", trRatios->kb2[i]);
00314 sprintf (textBuff, "HIERARCH ESO QC KB2 CH%d", i);
00315 qfits_header_add (outFitsHeader, textBuff, messageBuffer, "Transfer Ratio", "");
00316 sprintf (messageBuffer, "%f", trRatios->sigb2[i]);
00317 sprintf (textBuff, "HIERARCH ESO QC SIGB2 CH%d", i);
00318 qfits_header_add (outFitsHeader, textBuff, messageBuffer, "Transfer Ratio Error", "");
00319 }
00320 }
00321 }
00322
00323
00324 qfits_header_add (outFitsHeader, "HIERARCH ESO QC PLACEH1", "TBD", "TBD", "");
00325 qfits_header_add (outFitsHeader, "HIERARCH ESO QC PLACEH2", "TBD", "TBD", "");
00326 qfits_header_add (outFitsHeader, "HIERARCH ESO QC PLACEH3", "TBD", "TBD", "");
00327 qfits_header_add (outFitsHeader, "HIERARCH ESO QC PLACEH4", "TBD", "TBD", "");
00328 qfits_header_add (outFitsHeader, "HIERARCH ESO QC PLACEH5", "TBD", "TBD", "");
00329 qfits_header_add (outFitsHeader, "HIERARCH ESO QC PLACEH6", "TBD", "TBD", "");
00330 qfits_header_add (outFitsHeader, "HIERARCH ESO QC PLACEH7", "TBD", "TBD", "");
00331 qfits_header_add (outFitsHeader, "HIERARCH ESO QC PLACEH8", "TBD", "TBD", "");
00332 qfits_header_add (outFitsHeader, "HIERARCH ESO QC PLACEH9", "TBD", "TBD", "");
00333
00334
00335 if (stat (fileNames->outFitsName, &buf) == 0) remove (fileNames->outFitsName);
00336 outFitsPtr = fopen (fileNames->outFitsName, "w");
00337 if (!outFitsPtr)
00338 {
00339 *error = 1;
00340 midiReportWarning (midiReportPtr, routine, __FILE__, __LINE__, "Cannot create output FITS file");
00341 free (messageBuffer);
00342 free (currentTime);
00343 free (cleanString);
00344 free (stringTemp);
00345 free (classification);
00346 free (textBuff);
00347 free (sWidthX);
00348 free (sWidthY);
00349 return;
00350 }
00351
00352 cpl_msg_info(cpl_func,"Created Product FITS file: %s \n", fileNames->outFitsName);
00353 fprintf (midiReportPtr, "Created Product FITS file: %s \n", fileNames->outFitsName);
00354
00355
00356 qfits_header_sort (&outFitsHeader);
00357 qfits_header_dump (outFitsHeader, outFitsPtr);
00358 fclose (outFitsPtr);
00359 qfits_header_destroy (outFitsHeader);
00360
00361
00362 free (messageBuffer);
00363 free (currentTime);
00364 free (cleanString);
00365 free (stringTemp);
00366 free (classification);
00367 free (textBuff);
00368 free (sWidthX);
00369 free (sWidthY);
00370
00371 return;
00372 }
00373
00374
00375
00376
00377
00378
00379
00380
00381
00382
00383
00384
00385
00386
00387
00388
00389
00390 void createKappaQcLog (
00391 char *inFitsName,
00392 int *error)
00393
00394 {
00395
00396
00397
00398 const char routine[] = "createKappaQcLog";
00399 char *qfitsString, *emptyString, *cleanString;
00400
00401
00402
00403 if (diagnostic > 4)cpl_msg_info(cpl_func,"Invoking routine '%s' \n", routine);
00404 if (diagnostic > 4) fprintf(midiReportPtr, "Invoking routine '%s' \n", routine);
00405
00406
00407 *error = 0;
00408
00409
00410 emptyString = (char *) calloc (MIN_STRING_LENGTH, sizeof (char));
00411 cleanString = (char *) calloc (MAX_STRING_LENGTH, sizeof (char));
00412
00413
00414 strcpy (emptyString, "\"UNKNOWN\"");
00415
00416
00417 qfitsString = qfits_query_hdr (inFitsName, "ARCFILE");
00418 if (qfitsString == NULL)
00419 fprintf (midiQcLogPtr, "ARCFILE %s \n", emptyString);
00420 else {cleanUpString (qfitsString, cleanString);
00421 fprintf (midiQcLogPtr, "ARCFILE \"%s\" \n", cleanString);}
00422
00423 qfitsString = qfits_query_hdr (inFitsName, "TELESCOP");
00424 if (qfitsString == NULL)
00425 fprintf (midiQcLogPtr, "TELESCOP %s \n", emptyString);
00426 else {cleanUpString (qfitsString, cleanString);
00427 fprintf (midiQcLogPtr, "TELESCOP \"%s\" \n", cleanString);}
00428
00429 qfitsString = qfits_query_hdr (inFitsName, "INSTRUME");
00430 if (qfitsString == NULL)
00431 fprintf (midiQcLogPtr, "INSTRUME %s \n", emptyString);
00432 else {cleanUpString (qfitsString, cleanString);
00433 fprintf (midiQcLogPtr, "INSTRUME \"%s\" \n", cleanString);}
00434
00435 qfitsString = qfits_query_hdr (inFitsName, "MJD-OBS");
00436 if (qfitsString == NULL)
00437 fprintf (midiQcLogPtr, "MJD-OBS %s \n", emptyString);
00438 else {cleanUpString (qfitsString, cleanString);
00439 fprintf (midiQcLogPtr, "MJD-OBS \"%s\" \n", cleanString);}
00440
00441 qfitsString = qfits_query_hdr (inFitsName, "DATE-OBS");
00442 if (qfitsString == NULL)
00443 fprintf (midiQcLogPtr, "DATE-OBS %s \n", emptyString);
00444 else {cleanUpString (qfitsString, cleanString);
00445 fprintf (midiQcLogPtr, "DATE-OBS \"%s\" \n", cleanString);}
00446
00447 qfitsString = qfits_query_hdr (inFitsName, "UTC");
00448 if (qfitsString == NULL)
00449 fprintf (midiQcLogPtr, "UTC %s \n", emptyString);
00450 else {cleanUpString (qfitsString, cleanString);
00451 fprintf (midiQcLogPtr, "UTC %s \n", cleanString);}
00452
00453 qfitsString = qfits_query_hdr (inFitsName, "LST");
00454 if (qfitsString == NULL)
00455 fprintf (midiQcLogPtr, "LST %s \n", emptyString);
00456 else {cleanUpString (qfitsString, cleanString);
00457 fprintf (midiQcLogPtr, "LST %s \n", cleanString);}
00458
00459 qfitsString = qfits_query_hdr (inFitsName, "HIERARCH ESO COU GUID DEC");
00460 if (qfitsString == NULL)
00461 fprintf (midiQcLogPtr, "COU.GUID.DEC %s \n", emptyString);
00462 else {cleanUpString (qfitsString, cleanString);
00463 fprintf (midiQcLogPtr, "COU.GUID.DEC %s \n", cleanString);}
00464
00465 qfitsString = qfits_query_hdr (inFitsName, "HIERARCH ESO COU GUID RA");
00466 if (qfitsString == NULL)
00467 fprintf (midiQcLogPtr, "COU.GUID.RA %s \n", emptyString);
00468 else {cleanUpString (qfitsString, cleanString);
00469 fprintf (midiQcLogPtr, "COU.GUID.RA %s \n", cleanString);}
00470
00471 qfitsString = qfits_query_hdr (inFitsName, "HIERARCH ESO COU GUID MAG");
00472 if (qfitsString == NULL)
00473 fprintf (midiQcLogPtr, "COU.GUID.MAG %s \n", emptyString);
00474 else {cleanUpString (qfitsString, cleanString);
00475 fprintf (midiQcLogPtr, "COU.GUID.MAG %s \n", cleanString);}
00476
00477 qfitsString = qfits_query_hdr (inFitsName, "HIERARCH ESO COU AO1 STREHL_MEAN");
00478 if (qfitsString == NULL)
00479 fprintf (midiQcLogPtr, "COU.AO1.STREHL_MEAN %s \n", emptyString);
00480 else {cleanUpString (qfitsString, cleanString);
00481 fprintf (midiQcLogPtr, "COU.AO1.STREHL_MEAN %s \n", cleanString);}
00482
00483 qfitsString = qfits_query_hdr (inFitsName, "HIERARCH ESO COU AO2 STREHL_MEAN");
00484 if (qfitsString == NULL)
00485 fprintf (midiQcLogPtr, "COU.AO2.STREHL_MEAN %s \n", emptyString);
00486 else {cleanUpString (qfitsString, cleanString);
00487 fprintf (midiQcLogPtr, "COU.AO2.STREHL_MEAN %s \n", cleanString);}
00488
00489 qfitsString = qfits_query_hdr (inFitsName, "HIERARCH ESO COU AO1 STREHL_RMS");
00490 if (qfitsString == NULL)
00491 fprintf (midiQcLogPtr, "COU.AO1.STREHL_RMS %s \n", emptyString);
00492 else {cleanUpString (qfitsString, cleanString);
00493 fprintf (midiQcLogPtr, "COU.AO1.STREHL_RMS %s \n", cleanString);}
00494
00495 qfitsString = qfits_query_hdr (inFitsName, "HIERARCH ESO COU AO2 STREHL_RMS");
00496 if (qfitsString == NULL)
00497 fprintf (midiQcLogPtr, "COU.AO2.STREHL_RMS %s \n", emptyString);
00498 else {cleanUpString (qfitsString, cleanString);
00499 fprintf (midiQcLogPtr, "COU.AO2.STREHL_RMS %s \n", cleanString);}
00500
00501 qfitsString = qfits_query_hdr (inFitsName, "HIERARCH ESO COU AO1 WFE_MEAN");
00502 if (qfitsString == NULL)
00503 fprintf (midiQcLogPtr, "COU.AO1.WFE_MEAN %s \n", emptyString);
00504 else {cleanUpString (qfitsString, cleanString);
00505 fprintf (midiQcLogPtr, "COU.AO1.WFE_MEAN %s \n", cleanString);}
00506
00507 qfitsString = qfits_query_hdr (inFitsName, "HIERARCH ESO COU AO2 WFE_MEAN");
00508 if (qfitsString == NULL)
00509 fprintf (midiQcLogPtr, "COU.AO2.WFE_MEAN %s \n", emptyString);
00510 else {cleanUpString (qfitsString, cleanString);
00511 fprintf (midiQcLogPtr, "COU.AO2.WFE_MEAN %s \n", cleanString);}
00512
00513 qfitsString = qfits_query_hdr (inFitsName, "HIERARCH ESO COU AO1 WFE_RMS");
00514 if (qfitsString == NULL)
00515 fprintf (midiQcLogPtr, "COU.AO1.WFE_RMS %s \n", emptyString);
00516 else {cleanUpString (qfitsString, cleanString);
00517 fprintf (midiQcLogPtr, "COU.AO1.WFE_RMS %s \n", cleanString);}
00518
00519 qfitsString = qfits_query_hdr (inFitsName, "HIERARCH ESO COU AO2 WFE_RMS");
00520 if (qfitsString == NULL)
00521 fprintf (midiQcLogPtr, "COU.AO2.WFE_RMS %s \n", emptyString);
00522 else {cleanUpString (qfitsString, cleanString);
00523 fprintf (midiQcLogPtr, "COU.AO2.WFE_RMS %s \n", cleanString);}
00524
00525 qfitsString = qfits_query_hdr (inFitsName, "HIERARCH ESO COU AO1 ENC_MEAN");
00526 if (qfitsString == NULL)
00527 fprintf (midiQcLogPtr, "COU.AO1.ENC_MEAN %s \n", emptyString);
00528 else {cleanUpString (qfitsString, cleanString);
00529 fprintf (midiQcLogPtr, "COU.AO1.ENC_MEAN %s \n", cleanString);}
00530
00531 qfitsString = qfits_query_hdr (inFitsName, "HIERARCH ESO COU AO2 ENC_MEAN");
00532 if (qfitsString == NULL)
00533 fprintf (midiQcLogPtr, "COU.AO2.ENC_MEAN %s \n", emptyString);
00534 else {cleanUpString (qfitsString, cleanString);
00535 fprintf (midiQcLogPtr, "COU.AO2.ENC_MEAN %s \n", cleanString);}
00536
00537 qfitsString = qfits_query_hdr (inFitsName, "HIERARCH ESO COU AO1 ENC_RMS");
00538 if (qfitsString == NULL)
00539 fprintf (midiQcLogPtr, "COU.AO1.ENC_RMS %s \n", emptyString);
00540 else {cleanUpString (qfitsString, cleanString);
00541 fprintf (midiQcLogPtr, "COU.AO1.ENC_RMS %s \n", cleanString);}
00542
00543 qfitsString = qfits_query_hdr (inFitsName, "HIERARCH ESO COU AO2 ENC_RMS");
00544 if (qfitsString == NULL)
00545 fprintf (midiQcLogPtr, "COU.AO2.ENC_RMS %s \n", emptyString);
00546 else {cleanUpString (qfitsString, cleanString);
00547 fprintf (midiQcLogPtr, "COU.AO2.ENC_RMS %s \n", cleanString);}
00548
00549 qfitsString = qfits_query_hdr (inFitsName, "HIERARCH ESO COU AO1 FWHM_MEAN");
00550 if (qfitsString == NULL)
00551 fprintf (midiQcLogPtr, "COU.AO1.FWHM_MEAN %s \n", emptyString);
00552 else {cleanUpString (qfitsString, cleanString);
00553 fprintf (midiQcLogPtr, "COU.AO1.FWHM_MEAN %s \n", cleanString);}
00554
00555 qfitsString = qfits_query_hdr (inFitsName, "HIERARCH ESO COU AO2 FWHM_MEAN");
00556 if (qfitsString == NULL)
00557 fprintf (midiQcLogPtr, "COU.AO2.FWHM_MEAN %s \n", emptyString);
00558 else {cleanUpString (qfitsString, cleanString);
00559 fprintf (midiQcLogPtr, "COU.AO2.FWHM_MEAN %s \n", cleanString);}
00560
00561 qfitsString = qfits_query_hdr (inFitsName, "HIERARCH ESO COU AO1 FWHM_RMS");
00562 if (qfitsString == NULL)
00563 fprintf (midiQcLogPtr, "COU.AO1.FWHM_RMS %s \n", emptyString);
00564 else {cleanUpString (qfitsString, cleanString);
00565 fprintf (midiQcLogPtr, "COU.AO1.FWHM_RMS %s \n", cleanString);}
00566
00567 qfitsString = qfits_query_hdr (inFitsName, "HIERARCH ESO COU AO2 FWHM_RMS");
00568 if (qfitsString == NULL)
00569 fprintf (midiQcLogPtr, "COU.AO2.FWHM_RMS %s \n", emptyString);
00570 else {cleanUpString (qfitsString, cleanString);
00571 fprintf (midiQcLogPtr, "COU.AO2.FWHM_RMS %s \n", cleanString);}
00572
00573 qfitsString = qfits_query_hdr (inFitsName, "HIERARCH ESO COU AO1 L0_MEAN");
00574 if (qfitsString == NULL)
00575 fprintf (midiQcLogPtr, "COU.AO1.L0_MEAN %s \n", emptyString);
00576 else {cleanUpString (qfitsString, cleanString);
00577 fprintf (midiQcLogPtr, "COU.AO1.L0_MEAN %s \n", cleanString);}
00578
00579 qfitsString = qfits_query_hdr (inFitsName, "HIERARCH ESO COU AO2 L0_MEAN");
00580 if (qfitsString == NULL)
00581 fprintf (midiQcLogPtr, "COU.AO2.L0_MEAN %s \n", emptyString);
00582 else {cleanUpString (qfitsString, cleanString);
00583 fprintf (midiQcLogPtr, "COU.AO2.L0_MEAN %s \n", cleanString);}
00584
00585 qfitsString = qfits_query_hdr (inFitsName, "HIERARCH ESO COU AO1 L0_RMS");
00586 if (qfitsString == NULL)
00587 fprintf (midiQcLogPtr, "COU.AO1.L0_RMS %s \n", emptyString);
00588 else {cleanUpString (qfitsString, cleanString);
00589 fprintf (midiQcLogPtr, "COU.AO1.L0_RMS %s \n", cleanString);}
00590
00591 qfitsString = qfits_query_hdr (inFitsName, "HIERARCH ESO COU AO2 L0_RMS");
00592 if (qfitsString == NULL)
00593 fprintf (midiQcLogPtr, "COU.AO2.L0_RMS %s \n", emptyString);
00594 else {cleanUpString (qfitsString, cleanString);
00595 fprintf (midiQcLogPtr, "COU.AO2.L0_RMS %s \n", cleanString);}
00596
00597 qfitsString = qfits_query_hdr (inFitsName, "HIERARCH ESO COU AO1 R0_MEAN");
00598 if (qfitsString == NULL)
00599 fprintf (midiQcLogPtr, "COU.AO1.R0_MEAN %s \n", emptyString);
00600 else {cleanUpString (qfitsString, cleanString);
00601 fprintf (midiQcLogPtr, "COU.AO1.R0_MEAN %s \n", cleanString);}
00602
00603 qfitsString = qfits_query_hdr (inFitsName, "HIERARCH ESO COU AO2 R0_MEAN");
00604 if (qfitsString == NULL)
00605 fprintf (midiQcLogPtr, "COU.AO2.R0_MEAN %s \n", emptyString);
00606 else {cleanUpString (qfitsString, cleanString);
00607 fprintf (midiQcLogPtr, "COU.AO2.R0_MEAN %s \n", cleanString);}
00608
00609 qfitsString = qfits_query_hdr (inFitsName, "HIERARCH ESO COU AO1 R0_RMS");
00610 if (qfitsString == NULL)
00611 fprintf (midiQcLogPtr, "COU.AO1.R0_RMS %s \n", emptyString);
00612 else {cleanUpString (qfitsString, cleanString);
00613 fprintf (midiQcLogPtr, "COU.AO1.R0_RMS %s \n", cleanString);}
00614
00615 qfitsString = qfits_query_hdr (inFitsName, "HIERARCH ESO COU AO2 R0_RMS");
00616 if (qfitsString == NULL)
00617 fprintf (midiQcLogPtr, "COU.AO2.R0_RMS %s \n", emptyString);
00618 else {cleanUpString (qfitsString, cleanString);
00619 fprintf (midiQcLogPtr, "COU.AO2.R0_RMS %s \n", cleanString);}
00620
00621 qfitsString = qfits_query_hdr (inFitsName, "HIERARCH ESO COU AO1 T0_MEAN");
00622 if (qfitsString == NULL)
00623 fprintf (midiQcLogPtr, "COU.AO1.T0_MEAN %s \n", emptyString);
00624 else {cleanUpString (qfitsString, cleanString);
00625 fprintf (midiQcLogPtr, "COU.AO1.T0_MEAN %s \n", cleanString);}
00626
00627 qfitsString = qfits_query_hdr (inFitsName, "HIERARCH ESO COU AO2 T0_MEAN");
00628 if (qfitsString == NULL)
00629 fprintf (midiQcLogPtr, "COU.AO2.T0_MEAN %s \n", emptyString);
00630 else {cleanUpString (qfitsString, cleanString);
00631 fprintf (midiQcLogPtr, "COU.AO2.T0_MEAN %s \n", cleanString);}
00632
00633 qfitsString = qfits_query_hdr (inFitsName, "HIERARCH ESO COU AO1 T0_RMS");
00634 if (qfitsString == NULL)
00635 fprintf (midiQcLogPtr, "COU.AO1.T0_RMS %s \n", emptyString);
00636 else {cleanUpString (qfitsString, cleanString);
00637 fprintf (midiQcLogPtr, "COU.AO1.T0_RMS %s \n", cleanString);}
00638
00639 qfitsString = qfits_query_hdr (inFitsName, "HIERARCH ESO COU AO2 T0_RMS");
00640 if (qfitsString == NULL)
00641 fprintf (midiQcLogPtr, "COU.AO2.T0_RMS %s \n", emptyString);
00642 else {cleanUpString (qfitsString, cleanString);
00643 fprintf (midiQcLogPtr, "COU.AO2.T0_RMS %s \n", cleanString);}
00644
00645 qfitsString = qfits_query_hdr (inFitsName, "HIERARCH ESO DET CHIP NX");
00646 if (qfitsString == NULL)
00647 fprintf (midiQcLogPtr, "DET.CHIP.NX %s \n", emptyString);
00648 else {cleanUpString (qfitsString, cleanString);
00649 fprintf (midiQcLogPtr, "DET.CHIP.NX %s \n", cleanString);}
00650
00651 qfitsString = qfits_query_hdr (inFitsName, "HIERARCH ESO DET CHIP NY");
00652 if (qfitsString == NULL)
00653 fprintf (midiQcLogPtr, "DET.CHIP.NY %s \n", emptyString);
00654 else {cleanUpString (qfitsString, cleanString);
00655 fprintf (midiQcLogPtr, "DET.CHIP.NY %s \n", cleanString);}
00656
00657 qfitsString = qfits_query_hdr (inFitsName, "HIERARCH ESO DET DIT");
00658 if (qfitsString == NULL)
00659 fprintf (midiQcLogPtr, "DET.DIT %s \n", emptyString);
00660 else {cleanUpString (qfitsString, cleanString);
00661 fprintf (midiQcLogPtr, "DET.DIT %s \n", cleanString);}
00662
00663 qfitsString = qfits_query_hdr (inFitsName, "HIERARCH ESO DET DITDELAY");
00664 if (qfitsString == NULL)
00665 fprintf (midiQcLogPtr, "DET.DITDELAY %s \n", emptyString);
00666 else {cleanUpString (qfitsString, cleanString);
00667 fprintf (midiQcLogPtr, "DET.DITDELAY %s \n", cleanString);}
00668
00669 qfitsString = qfits_query_hdr (inFitsName, "HIERARCH ESO DET INT MODE");
00670 if (qfitsString == NULL)
00671 fprintf (midiQcLogPtr, "DET.INT.MODE %s \n", emptyString);
00672 else {cleanUpString (qfitsString, cleanString);
00673 fprintf (midiQcLogPtr, "DET.INT.MODE \"%s\" \n", cleanString);}
00674
00675 qfitsString = qfits_query_hdr (inFitsName, "HIERARCH ESO DET NDIT");
00676 if (qfitsString == NULL)
00677 fprintf (midiQcLogPtr, "DET.NDIT %s \n", emptyString);
00678 else {cleanUpString (qfitsString, cleanString);
00679 fprintf (midiQcLogPtr, "DET.NDIT %s \n", cleanString);}
00680
00681 qfitsString = qfits_query_hdr (inFitsName, "HIERARCH ESO DET NRTS MODE");
00682 if (qfitsString == NULL)
00683 fprintf (midiQcLogPtr, "DET.NRTS.MODE %s \n", emptyString);
00684 else {cleanUpString (qfitsString, cleanString);
00685 fprintf (midiQcLogPtr, "DET.NRTS.MODE \"%s\" \n", cleanString);}
00686
00687 qfitsString = qfits_query_hdr (inFitsName, "HIERARCH ESO DET WIN1 NX");
00688 if (qfitsString == NULL)
00689 fprintf (midiQcLogPtr, "DET.WIN1.NX %s \n", emptyString);
00690 else {cleanUpString (qfitsString, cleanString);
00691 fprintf (midiQcLogPtr, "DET.WIN1.NX %s \n", cleanString);}
00692
00693 qfitsString = qfits_query_hdr (inFitsName, "HIERARCH ESO DET WIN1 NY");
00694 if (qfitsString == NULL)
00695 fprintf (midiQcLogPtr, "DET.WIN1.NY %s \n", emptyString);
00696 else {cleanUpString (qfitsString, cleanString);
00697 fprintf (midiQcLogPtr, "DET.WIN1.NY %s \n", cleanString);}
00698
00699 qfitsString = qfits_query_hdr (inFitsName, "HIERARCH ESO DET WIN2 NX");
00700 if (qfitsString == NULL)
00701 fprintf (midiQcLogPtr, "DET.WIN2.NX %s \n", emptyString);
00702 else {cleanUpString (qfitsString, cleanString);
00703 fprintf (midiQcLogPtr, "DET.WIN2.NX %s \n", cleanString);}
00704
00705 qfitsString = qfits_query_hdr (inFitsName, "HIERARCH ESO DET WIN2 NY");
00706 if (qfitsString == NULL)
00707 fprintf (midiQcLogPtr, "DET.WIN2.NY %s \n", emptyString);
00708 else {cleanUpString (qfitsString, cleanString);
00709 fprintf (midiQcLogPtr, "DET.WIN2.NY %s \n", cleanString);}
00710
00711 qfitsString = qfits_query_hdr (inFitsName, "HIERARCH ESO DPR CATG");
00712 if (qfitsString == NULL)
00713 fprintf (midiQcLogPtr, "DPR.CATG %s \n", emptyString);
00714 else {cleanUpString (qfitsString, cleanString);
00715 fprintf (midiQcLogPtr, "DPR.CATG \"%s\" \n", cleanString);}
00716
00717 qfitsString = qfits_query_hdr (inFitsName, "HIERARCH ESO DPR TECH");
00718 if (qfitsString == NULL)
00719 fprintf (midiQcLogPtr, "DPR.TECH %s \n", emptyString);
00720 else {cleanUpString (qfitsString, cleanString);
00721 fprintf (midiQcLogPtr, "DPR.TECH \"%s\" \n", cleanString);}
00722
00723 qfitsString = qfits_query_hdr (inFitsName, "HIERARCH ESO DPR TYPE");
00724 if (qfitsString == NULL)
00725 fprintf (midiQcLogPtr, "DPR.TYPE %s \n", emptyString);
00726 else {cleanUpString (qfitsString, cleanString);
00727 fprintf (midiQcLogPtr, "DPR.TYPE \"%s\" \n", cleanString);}
00728
00729 qfitsString = qfits_query_hdr (inFitsName, "HIERARCH ESO INS CAM NAME");
00730 if (qfitsString == NULL)
00731 fprintf (midiQcLogPtr, "INS.CAM.NAME %s \n", emptyString);
00732 else {cleanUpString (qfitsString, cleanString);
00733 fprintf (midiQcLogPtr, "INS.CAM.NAME \"%s\" \n", cleanString);}
00734
00735 qfitsString = qfits_query_hdr (inFitsName, "HIERARCH ESO INS FILT NAME");
00736 if (qfitsString == NULL)
00737 fprintf (midiQcLogPtr, "INS.FILT.NAME %s \n", emptyString);
00738 else {cleanUpString (qfitsString, cleanString);
00739 fprintf (midiQcLogPtr, "INS.FILT.NAME \"%s\" \n", cleanString);}
00740
00741 qfitsString = qfits_query_hdr (inFitsName, "HIERARCH ESO INS GRIS NAME");
00742 if (qfitsString == NULL)
00743 fprintf (midiQcLogPtr, "INS.GRIS.NAME %s \n", emptyString);
00744 else {cleanUpString (qfitsString, cleanString);
00745 fprintf (midiQcLogPtr, "INS.GRIS.NAME \"%s\" \n", cleanString);}
00746
00747 qfitsString = qfits_query_hdr (inFitsName, "HIERARCH ESO INS MODE");
00748 if (qfitsString == NULL)
00749 fprintf (midiQcLogPtr, "INS.MODE %s \n", emptyString);
00750 else {cleanUpString (qfitsString, cleanString);
00751 fprintf (midiQcLogPtr, "INS.MODE \"%s\" \n", cleanString);}
00752
00753 qfitsString = qfits_query_hdr (inFitsName, "HIERARCH ESO INS OPT1 NAME");
00754 if (qfitsString == NULL)
00755 fprintf (midiQcLogPtr, "INS.OPT1.NAME %s \n", emptyString);
00756 else {cleanUpString (qfitsString, cleanString);
00757 fprintf (midiQcLogPtr, "INS.OPT1.NAME \"%s\" \n", cleanString);}
00758
00759 qfitsString = qfits_query_hdr (inFitsName, "HIERARCH ESO INS OPT1 TYPE");
00760 if (qfitsString == NULL)
00761 fprintf (midiQcLogPtr, "INS.OPT1.TYPE %s \n", emptyString);
00762 else {cleanUpString (qfitsString, cleanString);
00763 fprintf (midiQcLogPtr, "INS.OPT1.TYPE \"%s\" \n", cleanString);}
00764
00765 qfitsString = qfits_query_hdr (inFitsName, "HIERARCH ESO INS SHUT NAME");
00766 if (qfitsString == NULL)
00767 fprintf (midiQcLogPtr, "INS.SHUT.NAME %s \n", emptyString);
00768 else {cleanUpString (qfitsString, cleanString);
00769 fprintf (midiQcLogPtr, "INS.SHUT.NAME \"%s\" \n", cleanString);}
00770
00771 qfitsString = qfits_query_hdr (inFitsName, "HIERARCH ESO INS SLIT NAME");
00772 if (qfitsString == NULL)
00773 fprintf (midiQcLogPtr, "INS.SLIT.NAME %s \n", emptyString);
00774 else {cleanUpString (qfitsString, cleanString);
00775 fprintf (midiQcLogPtr, "INS.SLIT.NAME \"%s\" \n", cleanString);}
00776
00777 qfitsString = qfits_query_hdr (inFitsName, "HIERARCH ESO ISS AIRM END");
00778 if (qfitsString == NULL)
00779 fprintf (midiQcLogPtr, "ISS.AIRM.END %s \n", emptyString);
00780 else {cleanUpString (qfitsString, cleanString);
00781 fprintf (midiQcLogPtr, "ISS.AIRM.END %s \n", cleanString);}
00782
00783 qfitsString = qfits_query_hdr (inFitsName, "HIERARCH ESO ISS AIRM START");
00784 if (qfitsString == NULL)
00785 fprintf (midiQcLogPtr, "ISS.AIRM.START %s \n", emptyString);
00786 else {cleanUpString (qfitsString, cleanString);
00787 fprintf (midiQcLogPtr, "ISS.AIRM.START %s \n", cleanString);}
00788
00789 qfitsString = qfits_query_hdr (inFitsName, "HIERARCH ESO ISS ALT");
00790 if (qfitsString == NULL)
00791 fprintf (midiQcLogPtr, "ISS.ALT %s \n", emptyString);
00792 else {cleanUpString (qfitsString, cleanString);
00793 fprintf (midiQcLogPtr, "ISS.ALT %s \n", cleanString);}
00794
00795 qfitsString = qfits_query_hdr (inFitsName, "HIERARCH ESO ISS AMBI FWHM END");
00796 if (qfitsString == NULL)
00797 fprintf (midiQcLogPtr, "ISS.AMBI.FWHM.END %s \n", emptyString);
00798 else {cleanUpString (qfitsString, cleanString);
00799 fprintf (midiQcLogPtr, "ISS.AMBI.FWHM.END %s \n", cleanString);}
00800
00801 qfitsString = qfits_query_hdr (inFitsName, "HIERARCH ESO ISS AMBI FWHM START");
00802 if (qfitsString == NULL)
00803 fprintf (midiQcLogPtr, "ISS.AMBI.FWHM.START %s \n", emptyString);
00804 else {cleanUpString (qfitsString, cleanString);
00805 fprintf (midiQcLogPtr, "ISS.AMBI.FWHM.START %s \n", cleanString);}
00806
00807 qfitsString = qfits_query_hdr (inFitsName, "HIERARCH ESO ISS AMBI PRES");
00808 if (qfitsString == NULL)
00809 fprintf (midiQcLogPtr, "ISS.AMBI.PRES %s \n", emptyString);
00810 else {cleanUpString (qfitsString, cleanString);
00811 fprintf (midiQcLogPtr, "ISS.AMBI.PRES %s \n", cleanString);}
00812
00813 qfitsString = qfits_query_hdr (inFitsName, "HIERARCH ESO ISS AMBI RHUM");
00814 if (qfitsString == NULL)
00815 fprintf (midiQcLogPtr, "ISS.AMBI.RHUM %s \n", emptyString);
00816 else {cleanUpString (qfitsString, cleanString);
00817 fprintf (midiQcLogPtr, "ISS.AMBI.RHUM %s \n", cleanString);}
00818
00819 qfitsString = qfits_query_hdr (inFitsName, "HIERARCH ESO ISS AMBI TAU0 END");
00820 if (qfitsString == NULL)
00821 fprintf (midiQcLogPtr, "ISS.AMBI.TAU0.END %s \n", emptyString);
00822 else {cleanUpString (qfitsString, cleanString);
00823 fprintf (midiQcLogPtr, "ISS.AMBI.TAU0.END %s \n", cleanString);}
00824
00825 qfitsString = qfits_query_hdr (inFitsName, "HIERARCH ESO ISS AMBI TAU0 START");
00826 if (qfitsString == NULL)
00827 fprintf (midiQcLogPtr, "ISS.AMBI.TAU0.START %s \n", emptyString);
00828 else {cleanUpString (qfitsString, cleanString);
00829 fprintf (midiQcLogPtr, "ISS.AMBI.TAU0.START %s \n", cleanString);}
00830
00831 qfitsString = qfits_query_hdr (inFitsName, "HIERARCH ESO ISS AMBI TEMP");
00832 if (qfitsString == NULL)
00833 fprintf (midiQcLogPtr, "ISS.AMBI.TEMP %s \n", emptyString);
00834 else {cleanUpString (qfitsString, cleanString);
00835 fprintf (midiQcLogPtr, "ISS.AMBI.TEMP %s \n", cleanString);}
00836
00837 qfitsString = qfits_query_hdr (inFitsName, "HIERARCH ESO ISS AMBI WINDDIR");
00838 if (qfitsString == NULL)
00839 fprintf (midiQcLogPtr, "ISS.AMBI.WINDDIR %s \n", emptyString);
00840 else {cleanUpString (qfitsString, cleanString);
00841 fprintf (midiQcLogPtr, "ISS.AMBI.WINDDIR %s \n", cleanString);}
00842
00843 qfitsString = qfits_query_hdr (inFitsName, "HIERARCH ESO ISS AMBI WINDSP");
00844 if (qfitsString == NULL)
00845 fprintf (midiQcLogPtr, "ISS.AMBI.WINDSP %s \n", emptyString);
00846 else {cleanUpString (qfitsString, cleanString);
00847 fprintf (midiQcLogPtr, "ISS.AMBI.WINDSP %s \n", cleanString);}
00848
00849 qfitsString = qfits_query_hdr (inFitsName, "HIERARCH ESO ISS AZ");
00850 if (qfitsString == NULL)
00851 fprintf (midiQcLogPtr, "ISS.AZ %s \n", emptyString);
00852 else {cleanUpString (qfitsString, cleanString);
00853 fprintf (midiQcLogPtr, "ISS.AZ %s \n", cleanString);}
00854
00855 qfitsString = qfits_query_hdr (inFitsName, "HIERARCH ESO ISS CONF STATION1");
00856 if (qfitsString == NULL)
00857 fprintf (midiQcLogPtr, "ISS.CONF.STATION1 %s \n", emptyString);
00858 else {cleanUpString (qfitsString, cleanString);
00859 fprintf (midiQcLogPtr, "ISS.CONF.STATION1 \"%s\" \n", cleanString);}
00860
00861 qfitsString = qfits_query_hdr (inFitsName, "HIERARCH ESO ISS CONF STATION2");
00862 if (qfitsString == NULL)
00863 fprintf (midiQcLogPtr, "ISS.CONF.STATION2 %s \n", emptyString);
00864 else {cleanUpString (qfitsString, cleanString);
00865 fprintf (midiQcLogPtr, "ISS.CONF.STATION2 \"%s\" \n", cleanString);}
00866
00867 qfitsString = qfits_query_hdr (inFitsName, "HIERARCH ESO ISS CONF T1X");
00868 if (qfitsString == NULL)
00869 fprintf (midiQcLogPtr, "ISS.CONF.T1X %s \n", emptyString);
00870 else {cleanUpString (qfitsString, cleanString);
00871 fprintf (midiQcLogPtr, "ISS.CONF.T1X %s \n", cleanString);}
00872
00873 qfitsString = qfits_query_hdr (inFitsName, "HIERARCH ESO ISS CONF T1Y");
00874 if (qfitsString == NULL)
00875 fprintf (midiQcLogPtr, "ISS.CONF.T1Y %s \n", emptyString);
00876 else {cleanUpString (qfitsString, cleanString);
00877 fprintf (midiQcLogPtr, "ISS.CONF.T1Y %s \n", cleanString);}
00878
00879 qfitsString = qfits_query_hdr (inFitsName, "HIERARCH ESO ISS CONF T1Z");
00880 if (qfitsString == NULL)
00881 fprintf (midiQcLogPtr, "ISS.CONF.T1Z %s \n", emptyString);
00882 else {cleanUpString (qfitsString, cleanString);
00883 fprintf (midiQcLogPtr, "ISS.CONF.T1Z %s \n", cleanString);}
00884
00885 qfitsString = qfits_query_hdr (inFitsName, "HIERARCH ESO ISS CONF T2X");
00886 if (qfitsString == NULL)
00887 fprintf (midiQcLogPtr, "ISS.CONF.T2X %s \n", emptyString);
00888 else {cleanUpString (qfitsString, cleanString);
00889 fprintf (midiQcLogPtr, "ISS.CONF.T2X %s \n", cleanString);}
00890
00891 qfitsString = qfits_query_hdr (inFitsName, "HIERARCH ESO ISS CONF T2Y");
00892 if (qfitsString == NULL)
00893 fprintf (midiQcLogPtr, "ISS.CONF.T2Y %s \n", emptyString);
00894 else {cleanUpString (qfitsString, cleanString);
00895 fprintf (midiQcLogPtr, "ISS.CONF.T2Y %s \n", cleanString);}
00896
00897 qfitsString = qfits_query_hdr (inFitsName, "HIERARCH ESO ISS CONF T2Z");
00898 if (qfitsString == NULL)
00899 fprintf (midiQcLogPtr, "ISS.CONF.T2Z %s \n", emptyString);
00900 else {cleanUpString (qfitsString, cleanString);
00901 fprintf (midiQcLogPtr, "ISS.CONF.T2Z %s \n", cleanString);}
00902
00903 qfitsString = qfits_query_hdr (inFitsName, "HIERARCH ESO ISS PARANG END");
00904 if (qfitsString == NULL)
00905 fprintf (midiQcLogPtr, "ISS.PARANG.END %s \n", emptyString);
00906 else {cleanUpString (qfitsString, cleanString);
00907 fprintf (midiQcLogPtr, "ISS.PARANG.END %s \n", cleanString);}
00908
00909 qfitsString = qfits_query_hdr (inFitsName, "HIERARCH ESO ISS PARANG START");
00910 if (qfitsString == NULL)
00911 fprintf (midiQcLogPtr, "ISS.PARANG.START %s \n", emptyString);
00912 else {cleanUpString (qfitsString, cleanString);
00913 fprintf (midiQcLogPtr, "ISS.PARANG.START %s \n", cleanString);}
00914
00915 qfitsString = qfits_query_hdr (inFitsName, "HIERARCH ESO ISS PBL12 END");
00916 if (qfitsString == NULL)
00917 fprintf (midiQcLogPtr, "ISS.PBL12.END %s \n", emptyString);
00918 else {cleanUpString (qfitsString, cleanString);
00919 fprintf (midiQcLogPtr, "ISS.PBL12.END %s \n", cleanString);}
00920
00921 qfitsString = qfits_query_hdr (inFitsName, "HIERARCH ESO ISS PBL12 START");
00922 if (qfitsString == NULL)
00923 fprintf (midiQcLogPtr, "ISS.PBL12.START %s \n", emptyString);
00924 else {cleanUpString (qfitsString, cleanString);
00925 fprintf (midiQcLogPtr, "ISS.PBL12.START %s \n", cleanString);}
00926
00927 qfitsString = qfits_query_hdr (inFitsName, "HIERARCH ESO OBS ID");
00928 if (qfitsString == NULL)
00929 fprintf (midiQcLogPtr, "OBS.ID %s \n", emptyString);
00930 else {cleanUpString (qfitsString, cleanString);
00931 fprintf (midiQcLogPtr, "OBS.ID \"%s\" \n", cleanString);}
00932
00933 qfitsString = qfits_query_hdr (inFitsName, "HIERARCH ESO OBS NAME");
00934 if (qfitsString == NULL)
00935 fprintf (midiQcLogPtr, "OBS.NAME %s \n", emptyString);
00936 else {cleanUpString (qfitsString, cleanString);
00937 fprintf (midiQcLogPtr, "OBS.NAME \"%s\" \n", cleanString);}
00938
00939 qfitsString = qfits_query_hdr (inFitsName, "HIERARCH ESO OBS PI-COI ID");
00940 if (qfitsString == NULL)
00941 fprintf (midiQcLogPtr, "OBS.PI-COI.ID %s \n", emptyString);
00942 else {cleanUpString (qfitsString, cleanString);
00943 fprintf (midiQcLogPtr, "OBS.PI-COI.ID \"%s\" \n", cleanString);}
00944
00945 qfitsString = qfits_query_hdr (inFitsName, "HIERARCH ESO OBS PI-COI NAME");
00946 if (qfitsString == NULL)
00947 fprintf (midiQcLogPtr, "OBS.PI-COI.NAME %s \n", emptyString);
00948 else {cleanUpString (qfitsString, cleanString);
00949 fprintf (midiQcLogPtr, "OBS.PI-COI.NAME \"%s\" \n", cleanString);}
00950
00951 qfitsString = qfits_query_hdr (inFitsName, "HIERARCH ESO OBS PROG ID");
00952 if (qfitsString == NULL)
00953 fprintf (midiQcLogPtr, "OBS.PROG.ID %s \n", emptyString);
00954 else {cleanUpString (qfitsString, cleanString);
00955 fprintf (midiQcLogPtr, "OBS.PROG.ID \"%s\" \n", cleanString);}
00956
00957 qfitsString = qfits_query_hdr (inFitsName, "HIERARCH ESO OBS START");
00958 if (qfitsString == NULL)
00959 fprintf (midiQcLogPtr, "OBS.START %s \n", emptyString);
00960 else {cleanUpString (qfitsString, cleanString);
00961 fprintf (midiQcLogPtr, "OBS.START \"%s\" \n", cleanString);}
00962
00963 qfitsString = qfits_query_hdr (inFitsName, "HIERARCH ESO OBS TARG NAME");
00964 if (qfitsString == NULL)
00965 fprintf (midiQcLogPtr, "OBS.TARG.NAME %s \n", emptyString);
00966 else {cleanUpString (qfitsString, cleanString);
00967 fprintf (midiQcLogPtr, "OBS.TARG.NAME \"%s\" \n", cleanString);}
00968
00969 qfitsString = qfits_query_hdr (inFitsName, "HIERARCH ESO OCS EXPO1 FNAME1");
00970 if (qfitsString == NULL)
00971 fprintf (midiQcLogPtr, "OCS.EXPO1.FNAME1 %s \n", emptyString);
00972 else {cleanUpString (qfitsString, cleanString);
00973 fprintf (midiQcLogPtr, "OCS.EXPO1.FNAME1 \"%s\" \n", cleanString);}
00974
00975 qfitsString = qfits_query_hdr (inFitsName, "HIERARCH ESO TPL ID");
00976 if (qfitsString == NULL)
00977 fprintf (midiQcLogPtr, "TPL.ID %s \n", emptyString);
00978 else {cleanUpString (qfitsString, cleanString);
00979 fprintf (midiQcLogPtr, "TPL.ID \"%s\" \n", cleanString);}
00980
00981 qfitsString = qfits_query_hdr (inFitsName, "HIERARCH ESO TPL START");
00982 if (qfitsString == NULL)
00983 fprintf (midiQcLogPtr, "TPL.START %s \n", emptyString);
00984 else {cleanUpString (qfitsString, cleanString);
00985 fprintf (midiQcLogPtr, "TPL.START \"%s\" \n", cleanString);}
00986
00987
00988
00989 free (emptyString);
00990 free (cleanString);
00991
00992 return;
00993 }
00994
00995
00996
00997
00998
00999
01000
01001
01002
01003
01004
01005
01006
01007
01008
01009 void addProdInfoToKappaQcLog (
01010 ImageFormat *format,
01011 MidiFiles *fileNames,
01012 TransferRatios *trRatios,
01013 int *error)
01014 {
01015
01016
01017
01018 const char routine[] = "addProdInfoToKappaQcLog";
01019 int i;
01020 FILE *inFitsBatchPtr;
01021 char *stringQfits, *messageBuffer, *currentTime, *textBuff, *cleanString,
01022 *stringTemp, *classification;
01023 time_t now;
01024 struct tm *newTime;
01025
01026
01027
01028 if (diagnostic > 4)cpl_msg_info(cpl_func,"Invoking routine '%s' \n", routine);
01029 if (diagnostic > 4) fprintf (midiReportPtr, "Invoking routine '%s' \n", routine);
01030
01031
01032 *error = 0;
01033
01034
01035 classification = (char *) calloc (MAX_STRING_LENGTH, sizeof (char));
01036 stringTemp = (char *) calloc (MAX_STRING_LENGTH, sizeof (char));
01037 cleanString = (char *) calloc (MAX_STRING_LENGTH, sizeof (char));
01038 textBuff = (char *) calloc (MAX_STRING_LENGTH, sizeof (char));
01039 messageBuffer = (char *) calloc (MAX_STRING_LENGTH, sizeof (char));
01040 currentTime = (char *) calloc (MIN_STRING_LENGTH, sizeof (char));
01041
01042
01043 now = time(NULL);
01044 newTime = gmtime (&now);
01045 strftime (currentTime, MIN_STRING_LENGTH, "%a %d %b %Y at %H:%M:%S", newTime);
01046
01047
01048 fprintf (midiQcLogPtr, "PRO.TYPE \"%s\" \n", format->obsType);
01049 fprintf (midiQcLogPtr, "PRO.CATG \"KAPPA_MATRIX\" \n");
01050 fprintf (midiQcLogPtr, "PRO.ARCFILE \"%s\" \n", fileNames->archFileName);
01051 fprintf (midiQcLogPtr, "PRO.PIPEDATE \"%s\" \n", currentTime);
01052 fprintf (midiQcLogPtr, "PRO.VERSION \"%s\" \n", MIDI_PIPE_VERSION);
01053 fprintf (midiQcLogPtr, "PRO.PIPEFILE \"%s\" \n", fileNames->pipeFileName);
01054 fprintf (midiQcLogPtr, "PRO.DID \"%s\" \n", MIDI_QC_DIC_VERSION);
01055
01056
01057 if ((inFitsBatchPtr = fopen (fileNames->inFitsBatch, "r")) == NULL)
01058 {
01059 *error = 1;
01060 midiReportWarning (midiReportPtr, routine, __FILE__, __LINE__, "Cannot open input FITS file list");
01061 free (messageBuffer);
01062 free (currentTime);
01063 free (cleanString);
01064 free (stringTemp);
01065 free (classification);
01066 free (textBuff);
01067 return;
01068 }
01069
01070 fprintf (midiQcLogPtr, "QC.KAPPA_EXISTS %d \n", trRatios->exists);
01071 if (trRatios->exists)
01072 {
01073 for (i = 0; i < format->iXWidth; i++)
01074 {
01075 if (badChannelList[i])
01076 {
01077 fprintf (midiQcLogPtr, "QC.KA1.CH%d %s \n", i, UNAV);
01078 fprintf (midiQcLogPtr, "QC.SIGA1.CH%d %s \n", i, UNAV);
01079 fprintf (midiQcLogPtr, "QC.KA2.CH%d %s \n", i, UNAV);
01080 fprintf (midiQcLogPtr, "QC.SIGA2.CH%d %s \n", i, UNAV);
01081 fprintf (midiQcLogPtr, "QC.KB1.CH%d %s \n", i, UNAV);
01082 fprintf (midiQcLogPtr, "QC.SIGB1.CH%d %s \n", i, UNAV);
01083 fprintf (midiQcLogPtr, "QC.KB2.CH%d %s \n", i, UNAV);
01084 fprintf (midiQcLogPtr, "QC.SIGB2.CH%d %s \n", i, UNAV);
01085 }
01086 else
01087 {
01088 fprintf (midiQcLogPtr, "QC.KA1.CH%d %f \n", i, trRatios->ka1[i]);
01089 fprintf (midiQcLogPtr, "QC.SIGA1.CH%d %f \n", i, trRatios->siga1[i]);
01090 fprintf (midiQcLogPtr, "QC.KA2.CH%d %f \n", i, trRatios->ka2[i]);
01091 fprintf (midiQcLogPtr, "QC.SIGA2.CH%d %f \n", i, trRatios->siga2[i]);
01092 fprintf (midiQcLogPtr, "QC.KB1.CH%d %f \n", i, trRatios->kb1[i]);
01093 fprintf (midiQcLogPtr, "QC.SIGB1.CH%d %f \n", i, trRatios->sigb1[i]);
01094 fprintf (midiQcLogPtr, "QC.KB2.CH%d %f \n", i, trRatios->kb2[i]);
01095 fprintf (midiQcLogPtr, "QC.SIGB2.CH%d %f \n", i, trRatios->sigb2[i]);
01096 }
01097 }
01098 }
01099
01100
01101 i = 1;
01102 while (fgets (stringTemp, MAX_STRING_LENGTH, inFitsBatchPtr) != NULL)
01103 {
01104 sprintf (classification, "%s", "");
01105 sscanf (stringTemp, "%s%s", messageBuffer, classification);
01106
01107
01108 if (strcmp (classification, "") == 0)
01109 {
01110 stringQfits = qfits_query_hdr (messageBuffer, "HIERARCH ESO DPR CATG");
01111 if (stringQfits == NULL)
01112 {
01113 sprintf (classification, "%s", "UNKNOWN");
01114 midiReportWarning (midiReportPtr, routine, __FILE__, __LINE__, "Cannot get Observation Category");
01115 }
01116 else
01117 {
01118 cleanUpString (stringQfits, cleanString);
01119 sprintf (classification, "%s", cleanString);
01120 }
01121 }
01122 removePathName (messageBuffer, midiReportPtr);
01123 fprintf (midiQcLogPtr, "PRO.REC1.RAW%d.NAME \"%s\" \n", i, messageBuffer);
01124 fprintf (midiQcLogPtr, "PRO.REC1.RAW%d.CATG \"%s\" \n", i++, classification);
01125 }
01126 fclose (inFitsBatchPtr);
01127
01128
01129 free (messageBuffer);
01130 free (currentTime);
01131 free (textBuff);
01132 free (cleanString);
01133 free (stringTemp);
01134 free (classification);
01135
01136 return;
01137 }
01138
01139
01140
01141
01142
01143
01144
01145
01146
01147
01148
01149
01150
01151
01152
01153
01154 void createTransferRatiosFile (
01155 int update,
01156 ImageFormat *format,
01157 MidiFiles *fileNames,
01158 TransferRatios *trRatios,
01159 int *error)
01160 {
01161
01162
01163
01164 const char routine[] = "createTransferRatiosFile";
01165 FILE *trrPtr=NULL, *trrHistoryPtr=NULL;
01166 char *fileString;
01167 int x;
01168 struct stat buf;
01169
01170
01171
01172 if (diagnostic > 4)cpl_msg_info(cpl_func,"Invoking routine '%s' \n", routine);
01173 if (diagnostic > 4) fprintf(midiReportPtr, "Invoking routine '%s' \n", routine);
01174
01175
01176 *error = 0;
01177
01178 if (!(trRatios->exists))
01179 {
01180 midiReportWarning (midiReportPtr, routine, __FILE__, __LINE__, "Cannot create Transfer Ratios file");
01181 *error = 1;
01182 return;
01183 }
01184
01185
01186 if (stat (fileNames->trrNameWrite, &buf) == 0)
01187 remove (fileNames->trrNameWrite);
01188
01189
01190 if ((trrPtr = fopen (fileNames->trrNameWrite, "w")) == NULL)
01191 {
01192 midiReportWarning (midiReportPtr, routine, __FILE__, __LINE__, "Cannot open file to store transfer matrix");
01193 *error = 1;
01194 return;
01195 }
01196
01197
01198 trrHistoryPtr = fopen (fileNames->trrHistoryName, "a");
01199 fprintf (trrHistoryPtr, "Transfer Ratios for batch %d \n", batchNumber);
01200 fprintf (trrHistoryPtr, "------------------------- \n");
01201 fprintf (trrHistoryPtr, "Channel ka1 siga1 ka2 siga2 kb1 sigb1 kb2 sigb2 \n");
01202
01203
01204 fprintf (trrPtr, "%d \n", format->iXWidth);
01205 for (x = 0; x < format->iXWidth; x++)
01206 {
01207 fprintf (trrPtr, "%f %f %f %f %f %f %f %f \n", trRatios->ka1[x], trRatios->siga1[x],
01208 trRatios->ka2[x], trRatios->siga2[x], trRatios->kb1[x], trRatios->sigb1[x],
01209 trRatios->kb2[x], trRatios->sigb2[x]);
01210 fprintf (trrHistoryPtr, "%3d %6.2f %6.2f %6.2f %6.2f %6.2f %6.2f %6.2f %6.2f \n", x,
01211 trRatios->ka1[x], trRatios->siga1[x], trRatios->ka2[x], trRatios->siga2[x],
01212 trRatios->kb1[x], trRatios->sigb1[x], trRatios->kb2[x], trRatios->sigb2[x]);
01213 }
01214
01215 fclose (trrPtr);
01216 fclose (trrHistoryPtr);
01217 cpl_msg_info(cpl_func,"Created Transfer Ratios file %s\n", fileNames->trrNameWrite);
01218 fprintf (midiReportPtr, "Created Transfer Ratios file %s\n", fileNames->trrNameWrite);
01219
01220
01221 if (update == 2)
01222 {
01223
01224 fileString = (char *) calloc (MAX_STRING_LENGTH, sizeof (char));
01225 sprintf (fileString , "%s_%s.dat", fileNames->transferRatiosName, format->grismId);
01226 if ((trrPtr = fopen (fileString, "w")) == NULL)
01227 {
01228 sprintf (midiMessage, "Cannot open Transfer Ratios database file %s", fileString);
01229 midiReportWarning (midiReportPtr, routine, __FILE__, __LINE__, midiMessage);
01230 *error = 1;
01231 free (fileString);
01232 return;
01233 }
01234
01235
01236 fprintf (trrPtr, "%d \n", format->iXWidth);
01237 for (x = 0; x < format->iXWidth; x++)
01238 {
01239 fprintf (trrPtr, "%f %f %f %f %f %f %f %f \n", trRatios->ka1[x], trRatios->siga1[x],
01240 trRatios->ka2[x], trRatios->siga2[x], trRatios->kb1[x], trRatios->sigb1[x],
01241 trRatios->kb2[x], trRatios->sigb2[x]);
01242 }
01243
01244 cpl_msg_info(cpl_func,"Updated Transfer Ratios database \n");
01245 fprintf (midiReportPtr, "Updated Transfer Ratios database \n");
01246 fclose (trrPtr);
01247 free (fileString);
01248 }
01249
01250 return;
01251 }
01252
01253