MIDI Pipeline Reference Manual  2.8.3
fileHandling.c
1 /******************************************************************************
2 *******************************************************************************
3 * European Southern Observatory
4 * VLTI Data Reduction Software
5 *
6 * File name: fileHanding.c
7 * Description: Contains the routines for general file handing
8 * and freeing
9 *
10 *
11 * History:
12 * 05-Jul-04 (csabet) Created
13 *******************************************************************************
14 ******************************************************************************/
15 
16 /******************************************************************************
17 * Compiler directives
18 ******************************************************************************/
19 
20 /******************************************************************************
21 * Include files
22 ******************************************************************************/
23 #include <sys/types.h>
24 #include <sys/stat.h>
25 #include <time.h>
26 #include <math.h>
27 #include <unistd.h>
28 #include <stdio.h>
29 #include <cpl.h>
30 #include "midiGlobal.h"
31 #include "midiLib.h"
32 #include "errorHandling.h"
33 #include "fileHandling.h"
34 #include "qfits.h"
35 
36 /******************************************************************************
37 * Global Variables
38 ******************************************************************************/
39 
40 /******************************************************************************
41 * Prototypes
42 ******************************************************************************/
43 
44 /*============================ C O D E A R E A ===========================*/
45 
46 
47 
48 
49 
50 /******************************************************************************
51 * European Southern Observatory
52 * VLTI MIDI Data Reduction Software
53 *
54 * Module name: removePathName
55 * Input/Output: See function arguments to avoid duplication
56 * Description: Returns a clean file name without the path name
57 *
58 *
59 * History:
60 * 26-Nov-03 (csabet) Created
61 ******************************************************************************/
62 void removePathName(
63  char *fileName, /* IO: Name of string possibly containig path names */
64  FILE *filePtr) /* In: Pointer to an open temporary file */
65 {
66  /* Local Declarations
67  --------------------*/
68  const char routine[] = "removePathName";
69  FILE *temp1Ptr, *temp2Ptr;
70  size_t stringLength;
71  unsigned int i, indexCount = 0;
72  char nextChar;
73 
74  /* Algorithm
75  -----------*/
76  if (diagnostic > 4)cpl_msg_info(cpl_func,"Invoking routine '%s' \n", routine);
77  if (diagnostic > 4) fprintf (filePtr, "Invoking routine '%s' \n", routine);
78 
79 
80  stringLength = strlen (fileName);
81  temp1Ptr = fopen("temp1.grb", "w");
82  fprintf (temp1Ptr, "%s\n", fileName);
83  fclose (temp1Ptr);
84  temp1Ptr = fopen("temp1.grb", "r");
85  for (i = 0; i < stringLength; i++)
86  {
87  fscanf (temp1Ptr, "%c", &nextChar);
88  if (memcmp (&nextChar, "/", 1) == 0) indexCount = i+1;
89  }
90  rewind (temp1Ptr);
91  temp2Ptr = fopen("temp2.grb", "w");
92  for (i = 0; i < stringLength; i++)
93  {
94  nextChar = fgetc (temp1Ptr);
95  if (i >= indexCount) fputc (nextChar, temp2Ptr);
96  }
97  fclose (temp1Ptr);
98  fclose (temp2Ptr);
99  temp2Ptr = fopen("temp2.grb", "r");
100  fscanf (temp2Ptr, "%s\n", fileName);
101  fclose (temp2Ptr);
102  remove ("temp1.grb");
103  remove ("temp2.grb");
104 
105  return;
106 }
107 /*****************************************************************************/
108 
109 
110 /******************************************************************************
111 * European Southern Observatory
112 * VLTI MIDI Data Reduction Software
113 *
114 * Module name: getFirstCharacter
115 * Input/Output: See function arguments to avoid duplication
116 * Description: Returns the first character of a string
117 *
118 *
119 * History:
120 * 13-Jan-04 (csabet) Created
121 ******************************************************************************/
122 char getFirstCharacter ( /* Ou: First character of the input string */
123  char *string) /* In: String to be examined */
124 {
125  /* Local Declarations
126  --------------------*/
127  const char routine[] = "getFirstCharacter";
128  char firstChar;
129  FILE *tempPtr;
130 
131  /* Algorithm
132  -----------*/
133  if (diagnostic > 4)cpl_msg_info(cpl_func,"Invoking routine '%s' \n", routine);
134 
135  if (string == NULL) return (' ');
136 
137  tempPtr = fopen ("getFirstChar.grb", "w");
138  fprintf (tempPtr, "%s\n", string);
139  fclose (tempPtr);
140  tempPtr = fopen ("getFirstChar.grb", "r");
141  fscanf (tempPtr, "%c", &firstChar);
142  fclose (tempPtr);
143  remove ("getFirstChar.grb");
144 
145  return (firstChar);
146 }
147 /*****************************************************************************/
148 
149 
150 
151 /******************************************************************************
152 * European Southern Observatory
153 * VLTI MIDI Data Reduction Software
154 *
155 * Module name: getFitsNames
156 * Input/Output: See function arguments to avoid duplication
157 * Description: It looks into a given directory and writes names of FITS files
158 * into an output file
159 *
160 * History:
161 * 17-Oct-03 (csabet) Created
162 ******************************************************************************/
163 void getFitsNames (
164  MidiFiles *fileNames, /* IO: Pointer to midi files structure */
165  FILE *filePtr)
166 {
167  /* Local Declarations
168  --------------------*/
169  const char routine[] = "getFitsNames";
170  char *argument;
171  FILE *inFitsClassifiedPtr;
172  struct stat buf;
173  int numOfFiles;
174 
175  /* Algorithm
176  -----------*/
177  if (diagnostic > 4)cpl_msg_info(cpl_func,"Invoking routine '%s' \n", routine);
178  if (diagnostic > 4) fprintf (filePtr, "Invoking routine '%s' \n", routine);
179 
180  /* Allocate memory */
181  argument = (char *) calloc (MAX_STRING_LENGTH, sizeof (char));
182 
183  /* Remove existing list */
184  if (stat (fileNames->inFitsClassified, &buf) == 0) /* If the file exist delete it */
185  remove (fileNames->inFitsClassified);
186 
187 /* TO_DO_MIDI_DRS This section shall be replaced by an appropriate C code. (csabet 26-Oct-03) */
188  strcat (argument, "ls -1 ");
189  strcat (argument, fileNames->inFileDir);
190  strcat (argument, "MIDI*.fits ");
191  strcat (argument, "> ");
192  strcat (argument, fileNames->inFitsClassified);
193  system (argument);
194 
195  /* Open the file for reading */
196  inFitsClassifiedPtr = fopen (fileNames->inFitsClassified, "r");
197  numOfFiles = 0;
198  while (fscanf (inFitsClassifiedPtr, "%s\n", argument) != EOF)
199  {
200  numOfFiles++;
201  }
202  if (numOfFiles == 0)
203  {
204  sprintf (midiMessage, "Cannot find any valid MIDI FITS files in ... %s", fileNames->inFileDir);
205  midiReportError (filePtr, routine, __FILE__, __LINE__, midiMessage);
206  }
207 
208  fclose (inFitsClassifiedPtr);
209 
210  /* Release memory */
211  free (argument);
212 
213  return;
214 }
215 /*****************************************************************************/
216 
217 
218 /******************************************************************************
219 * European Southern Observatory
220 * VLTI MIDI Data Reduction Software
221 *
222 * Module name: cleanUpString
223 * Input/Output: See function arguments to avoid duplication
224 * Description: Returns a clean string without spaces and quotes
225 *
226 *
227 * History:
228 * 11-Nov-03 (csabet) Created
229 ******************************************************************************/
230 void cleanUpString (
231  char *rawString, // In: String to be cleaned up
232  char *cleanString) // Ou: Cleaned up string
233 {
234  /* Local Declarations
235  --------------------*/
236  char *string=NULL, *qfitsStr=NULL;
237 
238  // Algorithm
239  //-----------
240 
241  // Allocate memory
242  string = (char *) calloc (MAX_STRING_LENGTH, sizeof (char));
243 
244  sprintf (string, "%s", rawString);
245  qfitsStr = qfits_pretty_string (string);
246  sprintf (cleanString, "%s", qfitsStr);
247 
248  // Release memory
249  free (string);
250 
251  return;
252 }
253 /*****************************************************************************/
254 
255 
256 /******************************************************************************
257 * European Southern Observatory
258 * VLTI MIDI Data Reduction Software
259 *
260 * Module name: removeNewLine
261 * Input/Output: See function arguments to avoid duplication
262 * Description: Returns a clean string without new line
263 *
264 *
265 * History:
266 * 29-Apr-05 (csabet) Created
267 ******************************************************************************/
268 void removeNewLine (
269  char *rawString, // In: String to be cleaned up
270  char *cleanString) // Ou: Cleaned up string
271 {
272  /* Local Declarations
273  --------------------*/
274  char lastChar, nextChar;
275  FILE *tempPtr=NULL;
276  int i;
277  char *tempSrt=NULL;
278  size_t newLength, stringLength;
279 
280  // Algorithm
281  //-----------
282  tempSrt = (char *) calloc (MAX_STRING_LENGTH, sizeof (char));
283  stringLength = strlen (rawString);
284  tempPtr = fopen ("temp.grb", "w");
285  fprintf (tempPtr, "%s\n", rawString);
286  fclose (tempPtr);
287  tempPtr = fopen ("temp.grb", "r");
288 
289  newLength = 0;
290  for (i = 0; i < (int)stringLength; i++)
291  {
292  nextChar = fgetc (tempPtr);
293  if (nextChar == '\n' || nextChar == ' ') break;
294  lastChar = nextChar;
295  newLength++;
296  }
297  if (lastChar == ' ') newLength--;
298  fclose (tempPtr);
299  strncpy (tempSrt, rawString, newLength);
300  sprintf (cleanString, "%s", tempSrt);
301  remove ("temp.grb");
302 
303  free (tempSrt);
304 
305  return;
306 }
307 /*****************************************************************************/
308 
309 
310 
311 /******************************************************************************
312 * European Southern Observatory
313 * VLTI MIDI Data Reduction Software
314 *
315 * Module name: createQcLog
316 * Input/Output: See function arguments to avoid duplication
317 * Description: Copies keywords from the raw input FITS primary header to the
318 * QC log
319 *
320 * History:
321 * 23-Feb-04 (csabet) Created
322 ******************************************************************************/
323 void createQcLog (
324  char *inFitsName,
325  int *error)
326 
327 {
328 
329  /* Local Declarations
330  --------------------*/
331  const char routine[] = "createQcLog";
332  char *qfitsString, *emptyString, *cleanString;
333 
334  /* Algorithm
335  -----------*/
336  if (diagnostic > 4)cpl_msg_info(cpl_func,"Invoking routine '%s' \n", routine);
337  if (diagnostic > 4) fprintf(midiReportPtr, "Invoking routine '%s' \n", routine);
338 
339  /* Reset status */
340  *error = 0;
341 
342  /* Allocate memory */
343  emptyString = (char *) calloc (MIN_STRING_LENGTH, sizeof (char));
344  cleanString = (char *) calloc (MAX_STRING_LENGTH, sizeof (char));
345 
346  /* Initialise empty string */
347  strcpy (emptyString, "\"UNKNOWN\"");
348 
349  /* Get all the keywords */
350  qfitsString = qfits_query_hdr (inFitsName, "ARCFILE");
351  if (qfitsString == NULL)
352  fprintf (midiQcLogPtr, "ARCFILE %s \n", emptyString);
353  else {cleanUpString (qfitsString, cleanString);
354  fprintf (midiQcLogPtr, "ARCFILE \"%s\" \n", cleanString);}
355 
356  qfitsString = qfits_query_hdr (inFitsName, "TELESCOP");
357  if (qfitsString == NULL)
358  fprintf (midiQcLogPtr, "TELESCOP %s \n", emptyString);
359  else {cleanUpString (qfitsString, cleanString);
360  fprintf (midiQcLogPtr, "TELESCOP \"%s\" \n", cleanString);}
361 
362  qfitsString = qfits_query_hdr (inFitsName, "INSTRUME");
363  if (qfitsString == NULL)
364  fprintf (midiQcLogPtr, "INSTRUME %s \n", emptyString);
365  else {cleanUpString (qfitsString, cleanString);
366  fprintf (midiQcLogPtr, "INSTRUME \"%s\" \n", cleanString);}
367 
368  qfitsString = qfits_query_hdr (inFitsName, "MJD-OBS");
369  if (qfitsString == NULL)
370  fprintf (midiQcLogPtr, "MJD-OBS %s \n", emptyString);
371  else {cleanUpString (qfitsString, cleanString);
372  fprintf (midiQcLogPtr, "MJD-OBS \"%s\" \n", cleanString);}
373 
374  qfitsString = qfits_query_hdr (inFitsName, "DATE-OBS");
375  if (qfitsString == NULL)
376  fprintf (midiQcLogPtr, "DATE-OBS %s \n", emptyString);
377  else {cleanUpString (qfitsString, cleanString);
378  fprintf (midiQcLogPtr, "DATE-OBS \"%s\" \n", cleanString);}
379 
380  qfitsString = qfits_query_hdr (inFitsName, "UTC");
381  if (qfitsString == NULL)
382  fprintf (midiQcLogPtr, "UTC %s \n", emptyString);
383  else {cleanUpString (qfitsString, cleanString);
384  fprintf (midiQcLogPtr, "UTC %s \n", cleanString);}
385 
386  qfitsString = qfits_query_hdr (inFitsName, "LST");
387  if (qfitsString == NULL)
388  fprintf (midiQcLogPtr, "LST %s \n", emptyString);
389  else {cleanUpString (qfitsString, cleanString);
390  fprintf (midiQcLogPtr, "LST %s \n", cleanString);}
391 
392  qfitsString = qfits_query_hdr (inFitsName, "HIERARCH ESO COU GUID DEC");
393  if (qfitsString == NULL)
394  fprintf (midiQcLogPtr, "COU.GUID.DEC %s \n", emptyString);
395  else {cleanUpString (qfitsString, cleanString);
396  fprintf (midiQcLogPtr, "COU.GUID.DEC %s \n", cleanString);}
397 
398  qfitsString = qfits_query_hdr (inFitsName, "HIERARCH ESO COU GUID RA");
399  if (qfitsString == NULL)
400  fprintf (midiQcLogPtr, "COU.GUID.RA %s \n", emptyString);
401  else {cleanUpString (qfitsString, cleanString);
402  fprintf (midiQcLogPtr, "COU.GUID.RA %s \n", cleanString);}
403 
404  qfitsString = qfits_query_hdr (inFitsName, "HIERARCH ESO COU GUID MAG");
405  if (qfitsString == NULL)
406  fprintf (midiQcLogPtr, "COU.GUID.MAG %s \n", emptyString);
407  else {cleanUpString (qfitsString, cleanString);
408  fprintf (midiQcLogPtr, "COU.GUID.MAG %s \n", cleanString);}
409 
410  qfitsString = qfits_query_hdr (inFitsName, "HIERARCH ESO COU AO1 STREHL_MEAN");
411  if (qfitsString == NULL)
412  fprintf (midiQcLogPtr, "COU.AO1.STREHL_MEAN %s \n", emptyString);
413  else {cleanUpString (qfitsString, cleanString);
414  fprintf (midiQcLogPtr, "COU.AO1.STREHL_MEAN %s \n", cleanString);}
415 
416  qfitsString = qfits_query_hdr (inFitsName, "HIERARCH ESO COU AO2 STREHL_MEAN");
417  if (qfitsString == NULL)
418  fprintf (midiQcLogPtr, "COU.AO2.STREHL_MEAN %s \n", emptyString);
419  else {cleanUpString (qfitsString, cleanString);
420  fprintf (midiQcLogPtr, "COU.AO2.STREHL_MEAN %s \n", cleanString);}
421 
422  qfitsString = qfits_query_hdr (inFitsName, "HIERARCH ESO COU AO1 STREHL_RMS");
423  if (qfitsString == NULL)
424  fprintf (midiQcLogPtr, "COU.AO1.STREHL_RMS %s \n", emptyString);
425  else {cleanUpString (qfitsString, cleanString);
426  fprintf (midiQcLogPtr, "COU.AO1.STREHL_RMS %s \n", cleanString);}
427 
428  qfitsString = qfits_query_hdr (inFitsName, "HIERARCH ESO COU AO2 STREHL_RMS");
429  if (qfitsString == NULL)
430  fprintf (midiQcLogPtr, "COU.AO2.STREHL_RMS %s \n", emptyString);
431  else {cleanUpString (qfitsString, cleanString);
432  fprintf (midiQcLogPtr, "COU.AO2.STREHL_RMS %s \n", cleanString);}
433 
434  qfitsString = qfits_query_hdr (inFitsName, "HIERARCH ESO COU AO1 WFE_MEAN");
435  if (qfitsString == NULL)
436  fprintf (midiQcLogPtr, "COU.AO1.WFE_MEAN %s \n", emptyString);
437  else {cleanUpString (qfitsString, cleanString);
438  fprintf (midiQcLogPtr, "COU.AO1.WFE_MEAN %s \n", cleanString);}
439 
440  qfitsString = qfits_query_hdr (inFitsName, "HIERARCH ESO COU AO2 WFE_MEAN");
441  if (qfitsString == NULL)
442  fprintf (midiQcLogPtr, "COU.AO2.WFE_MEAN %s \n", emptyString);
443  else {cleanUpString (qfitsString, cleanString);
444  fprintf (midiQcLogPtr, "COU.AO2.WFE_MEAN %s \n", cleanString);}
445 
446  qfitsString = qfits_query_hdr (inFitsName, "HIERARCH ESO COU AO1 WFE_RMS");
447  if (qfitsString == NULL)
448  fprintf (midiQcLogPtr, "COU.AO1.WFE_RMS %s \n", emptyString);
449  else {cleanUpString (qfitsString, cleanString);
450  fprintf (midiQcLogPtr, "COU.AO1.WFE_RMS %s \n", cleanString);}
451 
452  qfitsString = qfits_query_hdr (inFitsName, "HIERARCH ESO COU AO2 WFE_RMS");
453  if (qfitsString == NULL)
454  fprintf (midiQcLogPtr, "COU.AO2.WFE_RMS %s \n", emptyString);
455  else {cleanUpString (qfitsString, cleanString);
456  fprintf (midiQcLogPtr, "COU.AO2.WFE_RMS %s \n", cleanString);}
457 
458  qfitsString = qfits_query_hdr (inFitsName, "HIERARCH ESO COU AO1 ENC_MEAN");
459  if (qfitsString == NULL)
460  fprintf (midiQcLogPtr, "COU.AO1.ENC_MEAN %s \n", emptyString);
461  else {cleanUpString (qfitsString, cleanString);
462  fprintf (midiQcLogPtr, "COU.AO1.ENC_MEAN %s \n", cleanString);}
463 
464  qfitsString = qfits_query_hdr (inFitsName, "HIERARCH ESO COU AO2 ENC_MEAN");
465  if (qfitsString == NULL)
466  fprintf (midiQcLogPtr, "COU.AO2.ENC_MEAN %s \n", emptyString);
467  else {cleanUpString (qfitsString, cleanString);
468  fprintf (midiQcLogPtr, "COU.AO2.ENC_MEAN %s \n", cleanString);}
469 
470  qfitsString = qfits_query_hdr (inFitsName, "HIERARCH ESO COU AO1 ENC_RMS");
471  if (qfitsString == NULL)
472  fprintf (midiQcLogPtr, "COU.AO1.ENC_RMS %s \n", emptyString);
473  else {cleanUpString (qfitsString, cleanString);
474  fprintf (midiQcLogPtr, "COU.AO1.ENC_RMS %s \n", cleanString);}
475 
476  qfitsString = qfits_query_hdr (inFitsName, "HIERARCH ESO COU AO2 ENC_RMS");
477  if (qfitsString == NULL)
478  fprintf (midiQcLogPtr, "COU.AO2.ENC_RMS %s \n", emptyString);
479  else {cleanUpString (qfitsString, cleanString);
480  fprintf (midiQcLogPtr, "COU.AO2.ENC_RMS %s \n", cleanString);}
481 
482  qfitsString = qfits_query_hdr (inFitsName, "HIERARCH ESO COU AO1 FWHM_MEAN");
483  if (qfitsString == NULL)
484  fprintf (midiQcLogPtr, "COU.AO1.FWHM_MEAN %s \n", emptyString);
485  else {cleanUpString (qfitsString, cleanString);
486  fprintf (midiQcLogPtr, "COU.AO1.FWHM_MEAN %s \n", cleanString);}
487 
488  qfitsString = qfits_query_hdr (inFitsName, "HIERARCH ESO COU AO2 FWHM_MEAN");
489  if (qfitsString == NULL)
490  fprintf (midiQcLogPtr, "COU.AO2.FWHM_MEAN %s \n", emptyString);
491  else {cleanUpString (qfitsString, cleanString);
492  fprintf (midiQcLogPtr, "COU.AO2.FWHM_MEAN %s \n", cleanString);}
493 
494  qfitsString = qfits_query_hdr (inFitsName, "HIERARCH ESO COU AO1 FWHM_RMS");
495  if (qfitsString == NULL)
496  fprintf (midiQcLogPtr, "COU.AO1.FWHM_RMS %s \n", emptyString);
497  else {cleanUpString (qfitsString, cleanString);
498  fprintf (midiQcLogPtr, "COU.AO1.FWHM_RMS %s \n", cleanString);}
499 
500  qfitsString = qfits_query_hdr (inFitsName, "HIERARCH ESO COU AO2 FWHM_RMS");
501  if (qfitsString == NULL)
502  fprintf (midiQcLogPtr, "COU.AO2.FWHM_RMS %s \n", emptyString);
503  else {cleanUpString (qfitsString, cleanString);
504  fprintf (midiQcLogPtr, "COU.AO2.FWHM_RMS %s \n", cleanString);}
505 
506  qfitsString = qfits_query_hdr (inFitsName, "HIERARCH ESO COU AO1 L0_MEAN");
507  if (qfitsString == NULL)
508  fprintf (midiQcLogPtr, "COU.AO1.L0_MEAN %s \n", emptyString);
509  else {cleanUpString (qfitsString, cleanString);
510  fprintf (midiQcLogPtr, "COU.AO1.L0_MEAN %s \n", cleanString);}
511 
512  qfitsString = qfits_query_hdr (inFitsName, "HIERARCH ESO COU AO2 L0_MEAN");
513  if (qfitsString == NULL)
514  fprintf (midiQcLogPtr, "COU.AO2.L0_MEAN %s \n", emptyString);
515  else {cleanUpString (qfitsString, cleanString);
516  fprintf (midiQcLogPtr, "COU.AO2.L0_MEAN %s \n", cleanString);}
517 
518  qfitsString = qfits_query_hdr (inFitsName, "HIERARCH ESO COU AO1 L0_RMS");
519  if (qfitsString == NULL)
520  fprintf (midiQcLogPtr, "COU.AO1.L0_RMS %s \n", emptyString);
521  else {cleanUpString (qfitsString, cleanString);
522  fprintf (midiQcLogPtr, "COU.AO1.L0_RMS %s \n", cleanString);}
523 
524  qfitsString = qfits_query_hdr (inFitsName, "HIERARCH ESO COU AO2 L0_RMS");
525  if (qfitsString == NULL)
526  fprintf (midiQcLogPtr, "COU.AO2.L0_RMS %s \n", emptyString);
527  else {cleanUpString (qfitsString, cleanString);
528  fprintf (midiQcLogPtr, "COU.AO2.L0_RMS %s \n", cleanString);}
529 
530  qfitsString = qfits_query_hdr (inFitsName, "HIERARCH ESO COU AO1 R0_MEAN");
531  if (qfitsString == NULL)
532  fprintf (midiQcLogPtr, "COU.AO1.R0_MEAN %s \n", emptyString);
533  else {cleanUpString (qfitsString, cleanString);
534  fprintf (midiQcLogPtr, "COU.AO1.R0_MEAN %s \n", cleanString);}
535 
536  qfitsString = qfits_query_hdr (inFitsName, "HIERARCH ESO COU AO2 R0_MEAN");
537  if (qfitsString == NULL)
538  fprintf (midiQcLogPtr, "COU.AO2.R0_MEAN %s \n", emptyString);
539  else {cleanUpString (qfitsString, cleanString);
540  fprintf (midiQcLogPtr, "COU.AO2.R0_MEAN %s \n", cleanString);}
541 
542  qfitsString = qfits_query_hdr (inFitsName, "HIERARCH ESO COU AO1 R0_RMS");
543  if (qfitsString == NULL)
544  fprintf (midiQcLogPtr, "COU.AO1.R0_RMS %s \n", emptyString);
545  else {cleanUpString (qfitsString, cleanString);
546  fprintf (midiQcLogPtr, "COU.AO1.R0_RMS %s \n", cleanString);}
547 
548  qfitsString = qfits_query_hdr (inFitsName, "HIERARCH ESO COU AO2 R0_RMS");
549  if (qfitsString == NULL)
550  fprintf (midiQcLogPtr, "COU.AO2.R0_RMS %s \n", emptyString);
551  else {cleanUpString (qfitsString, cleanString);
552  fprintf (midiQcLogPtr, "COU.AO2.R0_RMS %s \n", cleanString);}
553 
554  qfitsString = qfits_query_hdr (inFitsName, "HIERARCH ESO COU AO1 T0_MEAN");
555  if (qfitsString == NULL)
556  fprintf (midiQcLogPtr, "COU.AO1.T0_MEAN %s \n", emptyString);
557  else {cleanUpString (qfitsString, cleanString);
558  fprintf (midiQcLogPtr, "COU.AO1.T0_MEAN %s \n", cleanString);}
559 
560  qfitsString = qfits_query_hdr (inFitsName, "HIERARCH ESO COU AO2 T0_MEAN");
561  if (qfitsString == NULL)
562  fprintf (midiQcLogPtr, "COU.AO2.T0_MEAN %s \n", emptyString);
563  else {cleanUpString (qfitsString, cleanString);
564  fprintf (midiQcLogPtr, "COU.AO2.T0_MEAN %s \n", cleanString);}
565 
566  qfitsString = qfits_query_hdr (inFitsName, "HIERARCH ESO COU AO1 T0_RMS");
567  if (qfitsString == NULL)
568  fprintf (midiQcLogPtr, "COU.AO1.T0_RMS %s \n", emptyString);
569  else {cleanUpString (qfitsString, cleanString);
570  fprintf (midiQcLogPtr, "COU.AO1.T0_RMS %s \n", cleanString);}
571 
572  qfitsString = qfits_query_hdr (inFitsName, "HIERARCH ESO COU AO2 T0_RMS");
573  if (qfitsString == NULL)
574  fprintf (midiQcLogPtr, "COU.AO2.T0_RMS %s \n", emptyString);
575  else {cleanUpString (qfitsString, cleanString);
576  fprintf (midiQcLogPtr, "COU.AO2.T0_RMS %s \n", cleanString);}
577 
578  qfitsString = qfits_query_hdr (inFitsName, "HIERARCH ESO DET CHIP NX");
579  if (qfitsString == NULL)
580  fprintf (midiQcLogPtr, "DET.CHIP.NX %s \n", emptyString);
581  else {cleanUpString (qfitsString, cleanString);
582  fprintf (midiQcLogPtr, "DET.CHIP.NX %s \n", cleanString);}
583 
584  qfitsString = qfits_query_hdr (inFitsName, "HIERARCH ESO DET CHIP NY");
585  if (qfitsString == NULL)
586  fprintf (midiQcLogPtr, "DET.CHIP.NY %s \n", emptyString);
587  else {cleanUpString (qfitsString, cleanString);
588  fprintf (midiQcLogPtr, "DET.CHIP.NY %s \n", cleanString);}
589 
590  qfitsString = qfits_query_hdr (inFitsName, "HIERARCH ESO DET DIT");
591  if (qfitsString == NULL)
592  fprintf (midiQcLogPtr, "DET.DIT %s \n", emptyString);
593  else {cleanUpString (qfitsString, cleanString);
594  fprintf (midiQcLogPtr, "DET.DIT %s \n", cleanString);}
595 
596  qfitsString = qfits_query_hdr (inFitsName, "HIERARCH ESO DET DITDELAY");
597  if (qfitsString == NULL)
598  fprintf (midiQcLogPtr, "DET.DITDELAY %s \n", emptyString);
599  else {cleanUpString (qfitsString, cleanString);
600  fprintf (midiQcLogPtr, "DET.DITDELAY %s \n", cleanString);}
601 
602  qfitsString = qfits_query_hdr (inFitsName, "HIERARCH ESO DET INT MODE");
603  if (qfitsString == NULL)
604  fprintf (midiQcLogPtr, "DET.INT.MODE %s \n", emptyString);
605  else {cleanUpString (qfitsString, cleanString);
606  fprintf (midiQcLogPtr, "DET.INT.MODE \"%s\" \n", cleanString);}
607 
608  qfitsString = qfits_query_hdr (inFitsName, "HIERARCH ESO DET NDIT");
609  if (qfitsString == NULL)
610  fprintf (midiQcLogPtr, "DET.NDIT %s \n", emptyString);
611  else {cleanUpString (qfitsString, cleanString);
612  fprintf (midiQcLogPtr, "DET.NDIT %s \n", cleanString);}
613 
614  qfitsString = qfits_query_hdr (inFitsName, "HIERARCH ESO DET NRTS MODE");
615  if (qfitsString == NULL)
616  fprintf (midiQcLogPtr, "DET.NRTS.MODE %s \n", emptyString);
617  else {cleanUpString (qfitsString, cleanString);
618  fprintf (midiQcLogPtr, "DET.NRTS.MODE \"%s\" \n", cleanString);}
619 
620  qfitsString = qfits_query_hdr (inFitsName, "HIERARCH ESO DET WIN1 NX");
621  if (qfitsString == NULL)
622  fprintf (midiQcLogPtr, "DET.WIN1.NX %s \n", emptyString);
623  else {cleanUpString (qfitsString, cleanString);
624  fprintf (midiQcLogPtr, "DET.WIN1.NX %s \n", cleanString);}
625 
626  qfitsString = qfits_query_hdr (inFitsName, "HIERARCH ESO DET WIN1 NY");
627  if (qfitsString == NULL)
628  fprintf (midiQcLogPtr, "DET.WIN1.NY %s \n", emptyString);
629  else {cleanUpString (qfitsString, cleanString);
630  fprintf (midiQcLogPtr, "DET.WIN1.NY %s \n", cleanString);}
631 
632  qfitsString = qfits_query_hdr (inFitsName, "HIERARCH ESO DET WIN2 NX");
633  if (qfitsString == NULL)
634  fprintf (midiQcLogPtr, "DET.WIN2.NX %s \n", emptyString);
635  else {cleanUpString (qfitsString, cleanString);
636  fprintf (midiQcLogPtr, "DET.WIN2.NX %s \n", cleanString);}
637 
638  qfitsString = qfits_query_hdr (inFitsName, "HIERARCH ESO DET WIN2 NY");
639  if (qfitsString == NULL)
640  fprintf (midiQcLogPtr, "DET.WIN2.NY %s \n", emptyString);
641  else {cleanUpString (qfitsString, cleanString);
642  fprintf (midiQcLogPtr, "DET.WIN2.NY %s \n", cleanString);}
643 
644  qfitsString = qfits_query_hdr (inFitsName, "HIERARCH ESO DPR CATG");
645  if (qfitsString == NULL)
646  fprintf (midiQcLogPtr, "DPR.CATG %s \n", emptyString);
647  else {cleanUpString (qfitsString, cleanString);
648  fprintf (midiQcLogPtr, "DPR.CATG \"%s\" \n", cleanString);}
649 
650  qfitsString = qfits_query_hdr (inFitsName, "HIERARCH ESO DPR TECH");
651  if (qfitsString == NULL)
652  fprintf (midiQcLogPtr, "DPR.TECH %s \n", emptyString);
653  else {cleanUpString (qfitsString, cleanString);
654  fprintf (midiQcLogPtr, "DPR.TECH \"%s\" \n", cleanString);}
655 
656  qfitsString = qfits_query_hdr (inFitsName, "HIERARCH ESO DPR TYPE");
657  if (qfitsString == NULL)
658  fprintf (midiQcLogPtr, "DPR.TYPE %s \n", emptyString);
659  else {cleanUpString (qfitsString, cleanString);
660  fprintf (midiQcLogPtr, "DPR.TYPE \"%s\" \n", cleanString);}
661 
662  qfitsString = qfits_query_hdr (inFitsName, "HIERARCH ESO INS CAM NAME");
663  if (qfitsString == NULL)
664  fprintf (midiQcLogPtr, "INS.CAM.NAME %s \n", emptyString);
665  else {cleanUpString (qfitsString, cleanString);
666  fprintf (midiQcLogPtr, "INS.CAM.NAME \"%s\" \n", cleanString);}
667 
668  qfitsString = qfits_query_hdr (inFitsName, "HIERARCH ESO INS FILT NAME");
669  if (qfitsString == NULL)
670  fprintf (midiQcLogPtr, "INS.FILT.NAME %s \n", emptyString);
671  else {cleanUpString (qfitsString, cleanString);
672  fprintf (midiQcLogPtr, "INS.FILT.NAME \"%s\" \n", cleanString);}
673 
674  qfitsString = qfits_query_hdr (inFitsName, "HIERARCH ESO INS GRIS NAME");
675  if (qfitsString == NULL)
676  fprintf (midiQcLogPtr, "INS.GRIS.NAME %s \n", emptyString);
677  else {cleanUpString (qfitsString, cleanString);
678  fprintf (midiQcLogPtr, "INS.GRIS.NAME \"%s\" \n", cleanString);}
679 
680  qfitsString = qfits_query_hdr (inFitsName, "HIERARCH ESO INS MODE");
681  if (qfitsString == NULL)
682  fprintf (midiQcLogPtr, "INS.MODE %s \n", emptyString);
683  else {cleanUpString (qfitsString, cleanString);
684  fprintf (midiQcLogPtr, "INS.MODE \"%s\" \n", cleanString);}
685 
686  qfitsString = qfits_query_hdr (inFitsName, "HIERARCH ESO INS OPT1 NAME");
687  if (qfitsString == NULL)
688  fprintf (midiQcLogPtr, "INS.OPT1.NAME %s \n", emptyString);
689  else {cleanUpString (qfitsString, cleanString);
690  fprintf (midiQcLogPtr, "INS.OPT1.NAME \"%s\" \n", cleanString);}
691 
692  qfitsString = qfits_query_hdr (inFitsName, "HIERARCH ESO INS OPT1 TYPE");
693  if (qfitsString == NULL)
694  fprintf (midiQcLogPtr, "INS.OPT1.TYPE %s \n", emptyString);
695  else {cleanUpString (qfitsString, cleanString);
696  fprintf (midiQcLogPtr, "INS.OPT1.TYPE \"%s\" \n", cleanString);}
697 
698  qfitsString = qfits_query_hdr (inFitsName, "HIERARCH ESO INS SHUT NAME");
699  if (qfitsString == NULL)
700  fprintf (midiQcLogPtr, "INS.SHUT.NAME %s \n", emptyString);
701  else {cleanUpString (qfitsString, cleanString);
702  fprintf (midiQcLogPtr, "INS.SHUT.NAME \"%s\" \n", cleanString);}
703 
704  qfitsString = qfits_query_hdr (inFitsName, "HIERARCH ESO INS SLIT NAME");
705  if (qfitsString == NULL)
706  fprintf (midiQcLogPtr, "INS.SLIT.NAME %s \n", emptyString);
707  else {cleanUpString (qfitsString, cleanString);
708  fprintf (midiQcLogPtr, "INS.SLIT.NAME \"%s\" \n", cleanString);}
709 
710  qfitsString = qfits_query_hdr (inFitsName, "HIERARCH ESO ISS AIRM END");
711  if (qfitsString == NULL)
712  fprintf (midiQcLogPtr, "ISS.AIRM.END %s \n", emptyString);
713  else {cleanUpString (qfitsString, cleanString);
714  fprintf (midiQcLogPtr, "ISS.AIRM.END %s \n", cleanString);}
715 
716  qfitsString = qfits_query_hdr (inFitsName, "HIERARCH ESO ISS AIRM START");
717  if (qfitsString == NULL)
718  fprintf (midiQcLogPtr, "ISS.AIRM.START %s \n", emptyString);
719  else {cleanUpString (qfitsString, cleanString);
720  fprintf (midiQcLogPtr, "ISS.AIRM.START %s \n", cleanString);}
721 
722  qfitsString = qfits_query_hdr (inFitsName, "HIERARCH ESO ISS ALT");
723  if (qfitsString == NULL)
724  fprintf (midiQcLogPtr, "ISS.ALT %s \n", emptyString);
725  else {cleanUpString (qfitsString, cleanString);
726  fprintf (midiQcLogPtr, "ISS.ALT %s \n", cleanString);}
727 
728  qfitsString = qfits_query_hdr (inFitsName, "HIERARCH ESO ISS AMBI FWHM END");
729  if (qfitsString == NULL)
730  fprintf (midiQcLogPtr, "ISS.AMBI.FWHM.END %s \n", emptyString);
731  else {cleanUpString (qfitsString, cleanString);
732  fprintf (midiQcLogPtr, "ISS.AMBI.FWHM.END %s \n", cleanString);}
733 
734  qfitsString = qfits_query_hdr (inFitsName, "HIERARCH ESO ISS AMBI FWHM START");
735  if (qfitsString == NULL)
736  fprintf (midiQcLogPtr, "ISS.AMBI.FWHM.START %s \n", emptyString);
737  else {cleanUpString (qfitsString, cleanString);
738  fprintf (midiQcLogPtr, "ISS.AMBI.FWHM.START %s \n", cleanString);}
739 
740  qfitsString = qfits_query_hdr (inFitsName, "HIERARCH ESO ISS AMBI PRES");
741  if (qfitsString == NULL)
742  fprintf (midiQcLogPtr, "ISS.AMBI.PRES %s \n", emptyString);
743  else {cleanUpString (qfitsString, cleanString);
744  fprintf (midiQcLogPtr, "ISS.AMBI.PRES %s \n", cleanString);}
745 
746  qfitsString = qfits_query_hdr (inFitsName, "HIERARCH ESO ISS AMBI RHUM");
747  if (qfitsString == NULL)
748  fprintf (midiQcLogPtr, "ISS.AMBI.RHUM %s \n", emptyString);
749  else {cleanUpString (qfitsString, cleanString);
750  fprintf (midiQcLogPtr, "ISS.AMBI.RHUM %s \n", cleanString);}
751 
752  qfitsString = qfits_query_hdr (inFitsName, "HIERARCH ESO ISS AMBI TAU0 END");
753  if (qfitsString == NULL)
754  fprintf (midiQcLogPtr, "ISS.AMBI.TAU0.END %s \n", emptyString);
755  else {cleanUpString (qfitsString, cleanString);
756  fprintf (midiQcLogPtr, "ISS.AMBI.TAU0.END %s \n", cleanString);}
757 
758  qfitsString = qfits_query_hdr (inFitsName, "HIERARCH ESO ISS AMBI TAU0 START");
759  if (qfitsString == NULL)
760  fprintf (midiQcLogPtr, "ISS.AMBI.TAU0.START %s \n", emptyString);
761  else {cleanUpString (qfitsString, cleanString);
762  fprintf (midiQcLogPtr, "ISS.AMBI.TAU0.START %s \n", cleanString);}
763 
764  qfitsString = qfits_query_hdr (inFitsName, "HIERARCH ESO ISS AMBI TEMP");
765  if (qfitsString == NULL)
766  fprintf (midiQcLogPtr, "ISS.AMBI.TEMP %s \n", emptyString);
767  else {cleanUpString (qfitsString, cleanString);
768  fprintf (midiQcLogPtr, "ISS.AMBI.TEMP %s \n", cleanString);}
769 
770  qfitsString = qfits_query_hdr (inFitsName, "HIERARCH ESO ISS AMBI WINDDIR");
771  if (qfitsString == NULL)
772  fprintf (midiQcLogPtr, "ISS.AMBI.WINDDIR %s \n", emptyString);
773  else {cleanUpString (qfitsString, cleanString);
774  fprintf (midiQcLogPtr, "ISS.AMBI.WINDDIR %s \n", cleanString);}
775 
776  qfitsString = qfits_query_hdr (inFitsName, "HIERARCH ESO ISS AMBI WINDSP");
777  if (qfitsString == NULL)
778  fprintf (midiQcLogPtr, "ISS.AMBI.WINDSP %s \n", emptyString);
779  else {cleanUpString (qfitsString, cleanString);
780  fprintf (midiQcLogPtr, "ISS.AMBI.WINDSP %s \n", cleanString);}
781 
782  qfitsString = qfits_query_hdr (inFitsName, "HIERARCH ESO ISS AZ");
783  if (qfitsString == NULL)
784  fprintf (midiQcLogPtr, "ISS.AZ %s \n", emptyString);
785  else {cleanUpString (qfitsString, cleanString);
786  fprintf (midiQcLogPtr, "ISS.AZ %s \n", cleanString);}
787 
788  qfitsString = qfits_query_hdr (inFitsName, "HIERARCH ESO ISS CONF STATION1");
789  if (qfitsString == NULL)
790  fprintf (midiQcLogPtr, "ISS.CONF.STATION1 %s \n", emptyString);
791  else {cleanUpString (qfitsString, cleanString);
792  fprintf (midiQcLogPtr, "ISS.CONF.STATION1 \"%s\" \n", cleanString);}
793 
794  qfitsString = qfits_query_hdr (inFitsName, "HIERARCH ESO ISS CONF STATION2");
795  if (qfitsString == NULL)
796  fprintf (midiQcLogPtr, "ISS.CONF.STATION2 %s \n", emptyString);
797  else {cleanUpString (qfitsString, cleanString);
798  fprintf (midiQcLogPtr, "ISS.CONF.STATION2 \"%s\" \n", cleanString);}
799 
800  qfitsString = qfits_query_hdr (inFitsName, "HIERARCH ESO ISS CONF T1X");
801  if (qfitsString == NULL)
802  fprintf (midiQcLogPtr, "ISS.CONF.T1X %s \n", emptyString);
803  else {cleanUpString (qfitsString, cleanString);
804  fprintf (midiQcLogPtr, "ISS.CONF.T1X %s \n", cleanString);}
805 
806  qfitsString = qfits_query_hdr (inFitsName, "HIERARCH ESO ISS CONF T1Y");
807  if (qfitsString == NULL)
808  fprintf (midiQcLogPtr, "ISS.CONF.T1Y %s \n", emptyString);
809  else {cleanUpString (qfitsString, cleanString);
810  fprintf (midiQcLogPtr, "ISS.CONF.T1Y %s \n", cleanString);}
811 
812  qfitsString = qfits_query_hdr (inFitsName, "HIERARCH ESO ISS CONF T1Z");
813  if (qfitsString == NULL)
814  fprintf (midiQcLogPtr, "ISS.CONF.T1Z %s \n", emptyString);
815  else {cleanUpString (qfitsString, cleanString);
816  fprintf (midiQcLogPtr, "ISS.CONF.T1Z %s \n", cleanString);}
817 
818  qfitsString = qfits_query_hdr (inFitsName, "HIERARCH ESO ISS CONF T2X");
819  if (qfitsString == NULL)
820  fprintf (midiQcLogPtr, "ISS.CONF.T2X %s \n", emptyString);
821  else {cleanUpString (qfitsString, cleanString);
822  fprintf (midiQcLogPtr, "ISS.CONF.T2X %s \n", cleanString);}
823 
824  qfitsString = qfits_query_hdr (inFitsName, "HIERARCH ESO ISS CONF T2Y");
825  if (qfitsString == NULL)
826  fprintf (midiQcLogPtr, "ISS.CONF.T2Y %s \n", emptyString);
827  else {cleanUpString (qfitsString, cleanString);
828  fprintf (midiQcLogPtr, "ISS.CONF.T2Y %s \n", cleanString);}
829 
830  qfitsString = qfits_query_hdr (inFitsName, "HIERARCH ESO ISS CONF T2Z");
831  if (qfitsString == NULL)
832  fprintf (midiQcLogPtr, "ISS.CONF.T2Z %s \n", emptyString);
833  else {cleanUpString (qfitsString, cleanString);
834  fprintf (midiQcLogPtr, "ISS.CONF.T2Z %s \n", cleanString);}
835 
836  qfitsString = qfits_query_hdr (inFitsName, "HIERARCH ESO ISS PARANG END");
837  if (qfitsString == NULL)
838  fprintf (midiQcLogPtr, "ISS.PARANG.END %s \n", emptyString);
839  else {cleanUpString (qfitsString, cleanString);
840  fprintf (midiQcLogPtr, "ISS.PARANG.END %s \n", cleanString);}
841 
842  qfitsString = qfits_query_hdr (inFitsName, "HIERARCH ESO ISS PARANG START");
843  if (qfitsString == NULL)
844  fprintf (midiQcLogPtr, "ISS.PARANG.START %s \n", emptyString);
845  else {cleanUpString (qfitsString, cleanString);
846  fprintf (midiQcLogPtr, "ISS.PARANG.START %s \n", cleanString);}
847 
848  qfitsString = qfits_query_hdr (inFitsName, "HIERARCH ESO ISS PBL12 END");
849  if (qfitsString == NULL)
850  fprintf (midiQcLogPtr, "ISS.PBL12.END %s \n", emptyString);
851  else {cleanUpString (qfitsString, cleanString);
852  fprintf (midiQcLogPtr, "ISS.PBL12.END %s \n", cleanString);}
853 
854  qfitsString = qfits_query_hdr (inFitsName, "HIERARCH ESO ISS PBL12 START");
855  if (qfitsString == NULL)
856  fprintf (midiQcLogPtr, "ISS.PBL12.START %s \n", emptyString);
857  else {cleanUpString (qfitsString, cleanString);
858  fprintf (midiQcLogPtr, "ISS.PBL12.START %s \n", cleanString);}
859 
860  qfitsString = qfits_query_hdr (inFitsName, "HIERARCH ESO OBS ID");
861  if (qfitsString == NULL)
862  fprintf (midiQcLogPtr, "OBS.ID %s \n", emptyString);
863  else {cleanUpString (qfitsString, cleanString);
864  fprintf (midiQcLogPtr, "OBS.ID \"%s\" \n", cleanString);}
865 
866  qfitsString = qfits_query_hdr (inFitsName, "HIERARCH ESO OBS NAME");
867  if (qfitsString == NULL)
868  fprintf (midiQcLogPtr, "OBS.NAME %s \n", emptyString);
869  else {cleanUpString (qfitsString, cleanString);
870  fprintf (midiQcLogPtr, "OBS.NAME \"%s\" \n", cleanString);}
871 
872  qfitsString = qfits_query_hdr (inFitsName, "HIERARCH ESO OBS PI-COI ID");
873  if (qfitsString == NULL)
874  fprintf (midiQcLogPtr, "OBS.PI-COI.ID %s \n", emptyString);
875  else {cleanUpString (qfitsString, cleanString);
876  fprintf (midiQcLogPtr, "OBS.PI-COI.ID \"%s\" \n", cleanString);}
877 
878  qfitsString = qfits_query_hdr (inFitsName, "HIERARCH ESO OBS PI-COI NAME");
879  if (qfitsString == NULL)
880  fprintf (midiQcLogPtr, "OBS.PI-COI.NAME %s \n", emptyString);
881  else {cleanUpString (qfitsString, cleanString);
882  fprintf (midiQcLogPtr, "OBS.PI-COI.NAME \"%s\" \n", cleanString);}
883 
884  qfitsString = qfits_query_hdr (inFitsName, "HIERARCH ESO OBS PROG ID");
885  if (qfitsString == NULL)
886  fprintf (midiQcLogPtr, "OBS.PROG.ID %s \n", emptyString);
887  else {cleanUpString (qfitsString, cleanString);
888  fprintf (midiQcLogPtr, "OBS.PROG.ID \"%s\" \n", cleanString);}
889 
890  qfitsString = qfits_query_hdr (inFitsName, "HIERARCH ESO OBS START");
891  if (qfitsString == NULL)
892  fprintf (midiQcLogPtr, "OBS.START %s \n", emptyString);
893  else {cleanUpString (qfitsString, cleanString);
894  fprintf (midiQcLogPtr, "OBS.START \"%s\" \n", cleanString);}
895 
896  qfitsString = qfits_query_hdr (inFitsName, "HIERARCH ESO OBS TARG NAME");
897  if (qfitsString == NULL)
898  fprintf (midiQcLogPtr, "OBS.TARG.NAME %s \n", emptyString);
899  else {cleanUpString (qfitsString, cleanString);
900  fprintf (midiQcLogPtr, "OBS.TARG.NAME \"%s\" \n", cleanString);}
901 
902  qfitsString = qfits_query_hdr (inFitsName, "HIERARCH ESO OCS EXPO1 FNAME1");
903  if (qfitsString == NULL)
904  fprintf (midiQcLogPtr, "OCS.EXPO1.FNAME1 %s \n", emptyString);
905  else {cleanUpString (qfitsString, cleanString);
906  fprintf (midiQcLogPtr, "OCS.EXPO1.FNAME1 \"%s\" \n", cleanString);}
907 
908  qfitsString = qfits_query_hdr (inFitsName, "HIERARCH ESO TPL ID");
909  if (qfitsString == NULL)
910  fprintf (midiQcLogPtr, "TPL.ID %s \n", emptyString);
911  else {cleanUpString (qfitsString, cleanString);
912  fprintf (midiQcLogPtr, "TPL.ID \"%s\" \n", cleanString);}
913 
914  qfitsString = qfits_query_hdr (inFitsName, "HIERARCH ESO TPL START");
915  if (qfitsString == NULL)
916  fprintf (midiQcLogPtr, "TPL.START %s \n", emptyString);
917  else {cleanUpString (qfitsString, cleanString);
918  fprintf (midiQcLogPtr, "TPL.START \"%s\" \n", cleanString);}
919 
920 
921  /* Release memory */
922  free (emptyString);
923  free (cleanString);
924 
925  return;
926 }
927 /*****************************************************************************/