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