Sophie

Sophie

distrib > Fedora > 15 > i386 > by-pkgid > ce1f17e7ec5e62f35dbe9f064c5f74d7 > files > 678

libtpcimgio-devel-1.5.10-4.fc15.i686.rpm

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
<title>img_e63.c Source File</title>
<link href="tabs.css" rel="stylesheet" type="text/css"/>
<link href="doxygen.css" rel="stylesheet" type="text/css"/>
</head>
<body>
<!-- Generated by Doxygen 1.7.4 -->
<div id="top">
  <div id="navrow1" class="tabs">
    <ul class="tablist">
      <li><a href="index.html"><span>Main&#160;Page</span></a></li>
      <li><a href="pages.html"><span>Related&#160;Pages</span></a></li>
      <li><a href="annotated.html"><span>Data&#160;Structures</span></a></li>
      <li class="current"><a href="files.html"><span>Files</span></a></li>
      <li><a href="dirs.html"><span>Directories</span></a></li>
    </ul>
  </div>
  <div id="navrow2" class="tabs2">
    <ul class="tablist">
      <li><a href="files.html"><span>File&#160;List</span></a></li>
      <li><a href="globals.html"><span>Globals</span></a></li>
    </ul>
  </div>
<div class="header">
  <div class="headertitle">
<div class="title">img_e63.c</div>  </div>
</div>
<div class="contents">
<a href="img__e63_8c.html">Go to the documentation of this file.</a><div class="fragment"><pre class="fragment"><a name="l00001"></a>00001 <span class="comment">/******************************************************************************</span>
<a name="l00002"></a>00002 <span class="comment"></span>
<a name="l00003"></a>00003 <span class="comment">  Copyright (c) 2007,2008 Turku PET Centre</span>
<a name="l00004"></a>00004 <span class="comment"></span>
<a name="l00005"></a>00005 <span class="comment">  Library:     img_e63.c</span>
<a name="l00006"></a>00006 <span class="comment">  Description: ECAT 6.3 I/O routines for IMG data.</span>
<a name="l00007"></a>00007 <span class="comment"></span>
<a name="l00008"></a>00008 <span class="comment">  This library is free software; you can redistribute it and/or</span>
<a name="l00009"></a>00009 <span class="comment">  modify it under the terms of the GNU Lesser General Public</span>
<a name="l00010"></a>00010 <span class="comment">  License as published by the Free Software Foundation; either</span>
<a name="l00011"></a>00011 <span class="comment">  version 2.1 of the License, or (at your option) any later version.</span>
<a name="l00012"></a>00012 <span class="comment"></span>
<a name="l00013"></a>00013 <span class="comment">  This library is distributed in the hope that it will be useful,</span>
<a name="l00014"></a>00014 <span class="comment">  but WITHOUT ANY WARRANTY; without even the implied warranty of</span>
<a name="l00015"></a>00015 <span class="comment">  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.</span>
<a name="l00016"></a>00016 <span class="comment">  See the GNU Lesser General Public License for more details:</span>
<a name="l00017"></a>00017 <span class="comment">  http://www.gnu.org/copyleft/lesser.html</span>
<a name="l00018"></a>00018 <span class="comment"></span>
<a name="l00019"></a>00019 <span class="comment">  You should have received a copy of the GNU Lesser General Public License</span>
<a name="l00020"></a>00020 <span class="comment">  along with this library/program; if not, write to the Free Software</span>
<a name="l00021"></a>00021 <span class="comment">  Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA </span>
<a name="l00022"></a>00022 <span class="comment"></span>
<a name="l00023"></a>00023 <span class="comment">  Turku PET Centre, Turku, Finland, http://www.turkupetcentre.fi/</span>
<a name="l00024"></a>00024 <span class="comment"></span>
<a name="l00025"></a>00025 <span class="comment">  Modification history:</span>
<a name="l00026"></a>00026 <span class="comment">  2007-01-31 Vesa Oikonen</span>
<a name="l00027"></a>00027 <span class="comment">    Functions moved from imgfile.c.</span>
<a name="l00028"></a>00028 <span class="comment">    If valid study number is found in user_process_code, then take it from there.</span>
<a name="l00029"></a>00029 <span class="comment">    Patient_id and study_description are read and written.</span>
<a name="l00030"></a>00030 <span class="comment">    Prompts and randoms (delayed) are read and written.</span>
<a name="l00031"></a>00031 <span class="comment">  2007-03-25 VO</span>
<a name="l00032"></a>00032 <span class="comment">    Added functions imgGetEcat63MHeader(), imgSetEcat63MHeader(),</span>
<a name="l00033"></a>00033 <span class="comment">    imgEcat63Supported(), imgGetEcat63Fileformat(), imgReadEcat63Header(),</span>
<a name="l00034"></a>00034 <span class="comment">    imgReadEcat63FirstFrame(), imgReadEcat63Frame(), imgWriteEcat63Frame(),</span>
<a name="l00035"></a>00035 <span class="comment">    and imgSetEcat63SHeader().</span>
<a name="l00036"></a>00036 <span class="comment">  2007-09-10 VO</span>
<a name="l00037"></a>00037 <span class="comment">    Return value of localtime() is checked.</span>
<a name="l00038"></a>00038 <span class="comment">  2008-11-06 VO</span>
<a name="l00039"></a>00039 <span class="comment">    study_description is copied with strncpy(), not strcpy().</span>
<a name="l00040"></a>00040 <span class="comment"></span>
<a name="l00041"></a>00041 <span class="comment"></span>
<a name="l00042"></a>00042 <span class="comment"></span>
<a name="l00043"></a>00043 <span class="comment">******************************************************************************/</span>
<a name="l00044"></a>00044 <span class="preprocessor">#include &lt;stdio.h&gt;</span>
<a name="l00045"></a>00045 <span class="preprocessor">#include &lt;stdlib.h&gt;</span>
<a name="l00046"></a>00046 <span class="preprocessor">#include &lt;unistd.h&gt;</span>
<a name="l00047"></a>00047 <span class="preprocessor">#include &lt;math.h&gt;</span>
<a name="l00048"></a>00048 <span class="preprocessor">#include &lt;string.h&gt;</span>
<a name="l00049"></a>00049 <span class="preprocessor">#include &lt;time.h&gt;</span>
<a name="l00050"></a>00050 <span class="comment">/*****************************************************************************/</span>
<a name="l00051"></a>00051 <span class="preprocessor">#include &quot;petc99.h&quot;</span>
<a name="l00052"></a>00052 <span class="preprocessor">#include &quot;swap.h&quot;</span>
<a name="l00053"></a>00053 <span class="preprocessor">#include &quot;halflife.h&quot;</span>
<a name="l00054"></a>00054 <span class="comment">/*****************************************************************************/</span>
<a name="l00055"></a>00055 <span class="preprocessor">#include &quot;<a class="code" href="img_8h.html">include/img.h</a>&quot;</span>
<a name="l00056"></a>00056 <span class="preprocessor">#include &quot;<a class="code" href="ecat63_8h.html">include/ecat63.h</a>&quot;</span>
<a name="l00057"></a>00057 <span class="preprocessor">#include &quot;<a class="code" href="ecat7_8h.html">include/ecat7.h</a>&quot;</span>
<a name="l00058"></a>00058 <span class="preprocessor">#include &quot;<a class="code" href="imgmax_8h.html">include/imgmax.h</a>&quot;</span>
<a name="l00059"></a>00059 <span class="preprocessor">#include &quot;<a class="code" href="imgdecay_8h.html">include/imgdecay.h</a>&quot;</span>
<a name="l00060"></a>00060 <span class="preprocessor">#include &quot;<a class="code" href="sif_8h.html">include/sif.h</a>&quot;</span>
<a name="l00061"></a>00061 <span class="preprocessor">#include &quot;<a class="code" href="imgfile_8h.html">include/imgfile.h</a>&quot;</span>
<a name="l00062"></a>00062 <span class="comment">/*****************************************************************************/</span>
<a name="l00063"></a>00063 
<a name="l00064"></a>00064 <span class="comment">/*****************************************************************************/</span>
<a name="l00077"></a><a class="code" href="imgfile_8h.html#af743a62694374d314fc164f3b4ce942f">00077</a> <span class="keywordtype">int</span> <a class="code" href="img__e63_8c.html#af743a62694374d314fc164f3b4ce942f">ecat63ReadAllToImg</a>(<span class="keyword">const</span> <span class="keywordtype">char</span> *fname, <a class="code" href="structIMG.html">IMG</a> *img) {
<a name="l00078"></a>00078   <span class="keywordtype">int</span>                 i, j, m, ret, blkNr=0, dim_x=0, dim_y=0, pxlNr=0;
<a name="l00079"></a>00079   <span class="keywordtype">int</span>                 frameNr, planeNr, del_nr=0;
<a name="l00080"></a>00080   <span class="keywordtype">int</span>                 frame, plane, prev_frame, prev_plane, seqplane;
<a name="l00081"></a>00081   FILE               *fp;
<a name="l00082"></a>00082   <a class="code" href="structecat63__mainheader.html">ECAT63_mainheader</a>   main_header;
<a name="l00083"></a>00083   <a class="code" href="structMATRIXLIST.html">MATRIXLIST</a>          mlist;
<a name="l00084"></a>00084   <a class="code" href="structMatDir.html">MatDir</a>              tmpMatdir;
<a name="l00085"></a>00085   <a class="code" href="structMatval.html">Matval</a>              matval;
<a name="l00086"></a>00086   <a class="code" href="structecat63__imageheader.html">ECAT63_imageheader</a>  image_header;
<a name="l00087"></a>00087   <a class="code" href="structecat63__scanheader.html">ECAT63_scanheader</a>   scan_header;
<a name="l00088"></a>00088   <a class="code" href="structecat63__attnheader.html">ECAT63_attnheader</a>   attn_header;
<a name="l00089"></a>00089   <a class="code" href="structecat63__normheader.html">ECAT63_normheader</a>   norm_header;
<a name="l00090"></a>00090   <span class="keywordtype">float</span>               scale=1.0;
<a name="l00091"></a>00091   <span class="keywordtype">short</span> <span class="keywordtype">int</span>          *sptr;
<a name="l00092"></a>00092   <span class="keywordtype">char</span>               *mdata=NULL, *mptr;
<a name="l00093"></a>00093   <span class="keywordtype">int</span>                *iptr;
<a name="l00094"></a>00094   <span class="keyword">struct </span>tm           scanStart;
<a name="l00095"></a>00095 
<a name="l00096"></a>00096 
<a name="l00097"></a>00097   <span class="keywordflow">if</span>(<a class="code" href="img_8h.html#a0d66ed136e5992b7b00ce6f43bad1439">IMG_TEST</a>) printf(<span class="stringliteral">&quot;ecat63ReadAllToImg(%s, *img)\n&quot;</span>, fname);
<a name="l00098"></a>00098   <span class="comment">/* Check the arguments */</span>
<a name="l00099"></a>00099   <span class="keywordflow">if</span>(fname==NULL || img==NULL || img-&gt;<a class="code" href="structIMG.html#a5b8bdc61088df4a3c3f89c31895b14a4">status</a>!=<a class="code" href="img_8h.html#a7aeab2fb426b858c78ec515aaa8f0a67">IMG_STATUS_INITIALIZED</a>) {
<a name="l00100"></a>00100     <span class="keywordflow">if</span>(img) <a class="code" href="img_8c.html#ad124d2d496934d677156cc8779a1e567">imgSetStatus</a>(img, <a class="code" href="img_8h.html#a06fc87d81c62e9abb8790b6e5713c55baf8f3d89c25483639f6cbce4f6b08c1f8">STATUS_FAULT</a>);
<a name="l00101"></a>00101     <span class="keywordflow">return</span> 1;
<a name="l00102"></a>00102   }
<a name="l00103"></a>00103 
<a name="l00104"></a>00104   <span class="comment">/* Open input CTI file for read */</span>
<a name="l00105"></a>00105   <span class="keywordflow">if</span>((fp=fopen(fname, <span class="stringliteral">&quot;rb&quot;</span>)) == NULL) {
<a name="l00106"></a>00106     <a class="code" href="img_8c.html#ad124d2d496934d677156cc8779a1e567">imgSetStatus</a>(img, <a class="code" href="img_8h.html#a06fc87d81c62e9abb8790b6e5713c55ba9f298b5339db644dbc2b9dc01ef12006">STATUS_NOFILE</a>);
<a name="l00107"></a>00107     <span class="keywordflow">return</span> 3;
<a name="l00108"></a>00108   }
<a name="l00109"></a>00109 
<a name="l00110"></a>00110   <span class="comment">/* Read main header */</span>
<a name="l00111"></a>00111   <span class="keywordflow">if</span>((ret=<a class="code" href="ecat63r_8c.html#af904c6b26259c4f280cdc18f92aeeae5">ecat63ReadMainheader</a>(fp, &amp;main_header))) {
<a name="l00112"></a>00112     <a class="code" href="img_8c.html#ad124d2d496934d677156cc8779a1e567">imgSetStatus</a>(img, <a class="code" href="img_8h.html#a06fc87d81c62e9abb8790b6e5713c55bafa1051360f88591f14aa0383d8087132">STATUS_NOMAINHEADER</a>);
<a name="l00113"></a>00113     <span class="keywordflow">return</span> 4;
<a name="l00114"></a>00114   }
<a name="l00115"></a>00115   <span class="keywordflow">if</span>(<a class="code" href="img_8h.html#a0d66ed136e5992b7b00ce6f43bad1439">IMG_TEST</a>&gt;5) <a class="code" href="ecat63p_8c.html#a129d5f8c3d6135b9934cebc54d27bc47">ecat63PrintMainheader</a>(&amp;main_header, stdout);
<a name="l00116"></a>00116 
<a name="l00117"></a>00117   <span class="comment">/* Read matrix list and nr */</span>
<a name="l00118"></a>00118   <a class="code" href="ecat63ml_8c.html#a2477fe69c32ce33b443b9c0eaedae423">ecat63InitMatlist</a>(&amp;mlist);
<a name="l00119"></a>00119   ret=<a class="code" href="ecat63ml_8c.html#a6cce9d0e541e82d56c9d162f16202179">ecat63ReadMatlist</a>(fp, &amp;mlist);
<a name="l00120"></a>00120   <span class="keywordflow">if</span>(ret) {
<a name="l00121"></a>00121     <a class="code" href="img_8c.html#ad124d2d496934d677156cc8779a1e567">imgSetStatus</a>(img, <a class="code" href="img_8h.html#a06fc87d81c62e9abb8790b6e5713c55ba5b6084734072653f2466e29481713c4b">STATUS_NOMATLIST</a>);
<a name="l00122"></a>00122     <span class="keywordflow">return</span> 5;
<a name="l00123"></a>00123   }
<a name="l00124"></a>00124   <span class="keywordflow">if</span>(mlist.<a class="code" href="structMATRIXLIST.html#a7fcfb983a42851d8562084ddde1f9fcd">matrixNr</a>&lt;=0) {
<a name="l00125"></a>00125     strcpy(<a class="code" href="ecat63_8h.html#a1a4fc8f123b2ef83d928b63743aa49d9">ecat63errmsg</a>, <span class="stringliteral">&quot;matrix list is empty&quot;</span>);
<a name="l00126"></a>00126     <span class="keywordflow">return</span> 5;
<a name="l00127"></a>00127   }
<a name="l00128"></a>00128   <span class="comment">/* Sort matrix list */</span>
<a name="l00129"></a>00129   <span class="keywordflow">for</span>(i=0; i&lt;mlist.<a class="code" href="structMATRIXLIST.html#a7fcfb983a42851d8562084ddde1f9fcd">matrixNr</a>-1; i++) <span class="keywordflow">for</span>(j=i+1; j&lt;mlist.<a class="code" href="structMATRIXLIST.html#a7fcfb983a42851d8562084ddde1f9fcd">matrixNr</a>; j++) {
<a name="l00130"></a>00130     <span class="keywordflow">if</span>(mlist.<a class="code" href="structMATRIXLIST.html#a42676745379d69392b07b5c29626f6f9">matdir</a>[i].<a class="code" href="structMatDir.html#aeb0291ec1f5ac237c1e587ed3d23b1bb">matnum</a>&gt;mlist.<a class="code" href="structMATRIXLIST.html#a42676745379d69392b07b5c29626f6f9">matdir</a>[j].<a class="code" href="structMatDir.html#aeb0291ec1f5ac237c1e587ed3d23b1bb">matnum</a>) {
<a name="l00131"></a>00131       tmpMatdir=mlist.<a class="code" href="structMATRIXLIST.html#a42676745379d69392b07b5c29626f6f9">matdir</a>[i];
<a name="l00132"></a>00132       mlist.<a class="code" href="structMATRIXLIST.html#a42676745379d69392b07b5c29626f6f9">matdir</a>[i]=mlist.<a class="code" href="structMATRIXLIST.html#a42676745379d69392b07b5c29626f6f9">matdir</a>[j]; mlist.<a class="code" href="structMATRIXLIST.html#a42676745379d69392b07b5c29626f6f9">matdir</a>[j]=tmpMatdir;
<a name="l00133"></a>00133     }
<a name="l00134"></a>00134   }
<a name="l00135"></a>00135   <span class="keywordflow">if</span>(<a class="code" href="img_8h.html#a0d66ed136e5992b7b00ce6f43bad1439">IMG_TEST</a>&gt;6) {
<a name="l00136"></a>00136     printf(<span class="stringliteral">&quot;matrix list after sorting:\n&quot;</span>);
<a name="l00137"></a>00137     <a class="code" href="ecat63ml_8c.html#aabc712142bcbc9e27d79a840e80212ae">ecat63PrintMatlist</a>(&amp;mlist);
<a name="l00138"></a>00138   }
<a name="l00139"></a>00139 
<a name="l00140"></a>00140   <span class="comment">/* Trim extra frames */</span>
<a name="l00141"></a>00141   <span class="keywordflow">if</span>(main_header.<a class="code" href="structecat63__mainheader.html#a01ad1f4be366fb3ad82da61022e9761c">num_frames</a>&gt;0) {
<a name="l00142"></a>00142     del_nr=<a class="code" href="ecat63ml_8c.html#a9dc9509d99d809410fc5904410562856">ecat63DeleteLateFrames</a>(&amp;mlist, main_header.<a class="code" href="structecat63__mainheader.html#a01ad1f4be366fb3ad82da61022e9761c">num_frames</a>);
<a name="l00143"></a>00143     <span class="keywordflow">if</span>(<a class="code" href="img_8h.html#a0d66ed136e5992b7b00ce6f43bad1439">IMG_TEST</a> &amp;&amp; del_nr&gt;0)
<a name="l00144"></a>00144       printf(<span class="stringliteral">&quot;  %d entries in matrix list will not be used.\n&quot;</span>, del_nr);
<a name="l00145"></a>00145   }
<a name="l00146"></a>00146   <span class="comment">/* Calculate the number of planes, frames and gates */</span>
<a name="l00147"></a>00147   <span class="comment">/* Check that all planes have equal nr of frames (gates) */</span>
<a name="l00148"></a>00148   <span class="comment">/* and check that frames (gates) are consequentally numbered */</span>
<a name="l00149"></a>00149   prev_plane=plane=-1; prev_frame=frame=-1; frameNr=planeNr=0; ret=0;
<a name="l00150"></a>00150   <span class="keywordflow">for</span>(m=0; m&lt;mlist.<a class="code" href="structMATRIXLIST.html#a7fcfb983a42851d8562084ddde1f9fcd">matrixNr</a>; m++) <span class="keywordflow">if</span>(mlist.<a class="code" href="structMATRIXLIST.html#a42676745379d69392b07b5c29626f6f9">matdir</a>[m].<a class="code" href="structMatDir.html#a9096ac571f3dabee56894b264552f65f">matstat</a>==1) {
<a name="l00151"></a>00151     <span class="comment">/* get frame and plane */</span>
<a name="l00152"></a>00152     <a class="code" href="ecat63ml_8c.html#af566384e63f743897f71d8ee41b3b292">mat_numdoc</a>(mlist.<a class="code" href="structMATRIXLIST.html#a42676745379d69392b07b5c29626f6f9">matdir</a>[m].<a class="code" href="structMatDir.html#aeb0291ec1f5ac237c1e587ed3d23b1bb">matnum</a>, &amp;matval);
<a name="l00153"></a>00153     plane=matval.<a class="code" href="structMatval.html#ac87d088d281d918936f987cd19148069">plane</a>;
<a name="l00154"></a>00154     <span class="keywordflow">if</span>(main_header.<a class="code" href="structecat63__mainheader.html#a01ad1f4be366fb3ad82da61022e9761c">num_frames</a>&gt;=main_header.<a class="code" href="structecat63__mainheader.html#a5038021b6504d93e304931a95af64746">num_gates</a>) frame=matval.<a class="code" href="structMatval.html#a514081d81e26c20a377de4e945499446">frame</a>;
<a name="l00155"></a>00155     <span class="keywordflow">else</span> frame=matval.<a class="code" href="structMatval.html#ab317865439d3423f362a3094dd65fc18">gate</a>;
<a name="l00156"></a>00156     <span class="keywordflow">if</span>(<a class="code" href="img_8h.html#a0d66ed136e5992b7b00ce6f43bad1439">IMG_TEST</a>&gt;2) printf(<span class="stringliteral">&quot;frame=%d plane=%d\n&quot;</span>, frame, plane);
<a name="l00157"></a>00157     <span class="comment">/* did plane change? */</span>
<a name="l00158"></a>00158     <span class="keywordflow">if</span>(plane!=prev_plane) {
<a name="l00159"></a>00159       frameNr=1; planeNr++;
<a name="l00160"></a>00160     } <span class="keywordflow">else</span> {
<a name="l00161"></a>00161       frameNr++;
<a name="l00162"></a>00162       <span class="comment">/* In each plane, frame (gate) numbers must be continuous */</span>
<a name="l00163"></a>00163       <span class="keywordflow">if</span>(prev_frame&gt;0 &amp;&amp; frame!=prev_frame+1) {ret=1; <span class="keywordflow">break</span>;}
<a name="l00164"></a>00164     }
<a name="l00165"></a>00165     prev_plane=plane; prev_frame=frame;
<a name="l00166"></a>00166     <span class="comment">/* Calculate and check the size of one data matrix */</span>
<a name="l00167"></a>00167     <span class="keywordflow">if</span>(m==0) {
<a name="l00168"></a>00168       blkNr=mlist.<a class="code" href="structMATRIXLIST.html#a42676745379d69392b07b5c29626f6f9">matdir</a>[m].<a class="code" href="structMatDir.html#ad1781958d48d68431d0c3b630093994f">endblk</a>-mlist.<a class="code" href="structMATRIXLIST.html#a42676745379d69392b07b5c29626f6f9">matdir</a>[m].<a class="code" href="structMatDir.html#af91ca45aca86269901b03480b5b6d741">strtblk</a>;
<a name="l00169"></a>00169     } <span class="keywordflow">else</span> <span class="keywordflow">if</span>(blkNr!=mlist.<a class="code" href="structMATRIXLIST.html#a42676745379d69392b07b5c29626f6f9">matdir</a>[m].<a class="code" href="structMatDir.html#ad1781958d48d68431d0c3b630093994f">endblk</a>-mlist.<a class="code" href="structMATRIXLIST.html#a42676745379d69392b07b5c29626f6f9">matdir</a>[m].<a class="code" href="structMatDir.html#af91ca45aca86269901b03480b5b6d741">strtblk</a>) {
<a name="l00170"></a>00170       ret=2; <span class="keywordflow">break</span>;
<a name="l00171"></a>00171     }
<a name="l00172"></a>00172   } <span class="comment">/* next matrix */</span>
<a name="l00173"></a>00173   <span class="keywordflow">if</span>(<a class="code" href="img_8h.html#a0d66ed136e5992b7b00ce6f43bad1439">IMG_TEST</a>) printf(<span class="stringliteral">&quot;frameNr=%d planeNr=%d\n&quot;</span>, frameNr, planeNr);
<a name="l00174"></a>00174   <span class="keywordflow">if</span>(ret==1 || (frameNr*planeNr != mlist.<a class="code" href="structMATRIXLIST.html#a7fcfb983a42851d8562084ddde1f9fcd">matrixNr</a>-del_nr)) {
<a name="l00175"></a>00175     strcpy(<a class="code" href="ecat63_8h.html#a1a4fc8f123b2ef83d928b63743aa49d9">ecat63errmsg</a>, <span class="stringliteral">&quot;missing matrix&quot;</span>);
<a name="l00176"></a>00176     <a class="code" href="ecat63ml_8c.html#a2d931d7e3d4e21159731b7c480c209b9">ecat63EmptyMatlist</a>(&amp;mlist); fclose(fp);
<a name="l00177"></a>00177     <span class="keywordflow">return</span>(6); <span class="comment">/* this number is used in imgRead() */</span>
<a name="l00178"></a>00178   }
<a name="l00179"></a>00179   <span class="keywordflow">if</span>(ret==2) {
<a name="l00180"></a>00180     strcpy(<a class="code" href="ecat63_8h.html#a1a4fc8f123b2ef83d928b63743aa49d9">ecat63errmsg</a>, <span class="stringliteral">&quot;matrix sizes are different&quot;</span>);
<a name="l00181"></a>00181     <a class="code" href="ecat63ml_8c.html#a2d931d7e3d4e21159731b7c480c209b9">ecat63EmptyMatlist</a>(&amp;mlist); fclose(fp); <span class="keywordflow">return</span>(7);
<a name="l00182"></a>00182   }
<a name="l00183"></a>00183   <span class="comment">/* Read x,y-dimensions from 1st matrix subheader */</span>
<a name="l00184"></a>00184   m=0; <span class="keywordflow">if</span>(main_header.<a class="code" href="structecat63__mainheader.html#aeb7fd4a6b107a810dcff5d82b6f58440">file_type</a>==<a class="code" href="ecat63_8h.html#aaf5f1adfda44941c4bf4de3e71219e4a">IMAGE_DATA</a>) {
<a name="l00185"></a>00185     ret=<a class="code" href="ecat63r_8c.html#adc36293804c18dd15771c61500841b7c">ecat63ReadImageheader</a>(fp, mlist.<a class="code" href="structMATRIXLIST.html#a42676745379d69392b07b5c29626f6f9">matdir</a>[m].<a class="code" href="structMatDir.html#af91ca45aca86269901b03480b5b6d741">strtblk</a>, &amp;image_header);
<a name="l00186"></a>00186     dim_x=image_header.<a class="code" href="structecat63__imageheader.html#a86aae28e4de4b65fa5de745aab0bf082">dimension_1</a>; dim_y=image_header.<a class="code" href="structecat63__imageheader.html#ad53dbc60f5f5a34b7327abbf0d609d5d">dimension_2</a>;
<a name="l00187"></a>00187   } <span class="keywordflow">else</span> <span class="keywordflow">if</span>(main_header.<a class="code" href="structecat63__mainheader.html#aeb7fd4a6b107a810dcff5d82b6f58440">file_type</a>==<a class="code" href="ecat63_8h.html#a7140d943b6f40ad3c4bdab5a2073c2f6">RAW_DATA</a>) {
<a name="l00188"></a>00188     ret=<a class="code" href="ecat63r_8c.html#a811c9c52c52f1c749ee6cb0f7a51f884">ecat63ReadScanheader</a>(fp, mlist.<a class="code" href="structMATRIXLIST.html#a42676745379d69392b07b5c29626f6f9">matdir</a>[m].<a class="code" href="structMatDir.html#af91ca45aca86269901b03480b5b6d741">strtblk</a>, &amp;scan_header);
<a name="l00189"></a>00189     dim_x=scan_header.<a class="code" href="structecat63__scanheader.html#adee5ad20def49d6f13da7efde9da4e3e">dimension_1</a>; dim_y=scan_header.<a class="code" href="structecat63__scanheader.html#a87c12560397fa7408d95ad30d1800f92">dimension_2</a>;
<a name="l00190"></a>00190   } <span class="keywordflow">else</span> <span class="keywordflow">if</span>(main_header.<a class="code" href="structecat63__mainheader.html#aeb7fd4a6b107a810dcff5d82b6f58440">file_type</a>==<a class="code" href="ecat63_8h.html#a23271440af335f92b16c81abdff7818a">ATTN_DATA</a>) {
<a name="l00191"></a>00191     ret=<a class="code" href="ecat63r_8c.html#ac9c08bd1e03ddc4f4a8c83a5ea198e05">ecat63ReadAttnheader</a>(fp, mlist.<a class="code" href="structMATRIXLIST.html#a42676745379d69392b07b5c29626f6f9">matdir</a>[m].<a class="code" href="structMatDir.html#af91ca45aca86269901b03480b5b6d741">strtblk</a>, &amp;attn_header);
<a name="l00192"></a>00192     dim_x=attn_header.<a class="code" href="structecat63__attnheader.html#acbea9636493630fc7bdc3de4fcd4cfa2">dimension_1</a>; dim_y=attn_header.<a class="code" href="structecat63__attnheader.html#af9fa1e4491aa3321b4ce99f54e5ebb6e">dimension_2</a>;
<a name="l00193"></a>00193   } <span class="keywordflow">else</span> <span class="keywordflow">if</span>(main_header.<a class="code" href="structecat63__mainheader.html#aeb7fd4a6b107a810dcff5d82b6f58440">file_type</a>==<a class="code" href="ecat63_8h.html#a978e691d4d6416577705c5c654096e02">NORM_DATA</a>) {
<a name="l00194"></a>00194     ret=<a class="code" href="ecat63r_8c.html#a6a169297491f0f8a734247467cfb2b89">ecat63ReadNormheader</a>(fp, mlist.<a class="code" href="structMATRIXLIST.html#a42676745379d69392b07b5c29626f6f9">matdir</a>[m].<a class="code" href="structMatDir.html#af91ca45aca86269901b03480b5b6d741">strtblk</a>, &amp;norm_header);
<a name="l00195"></a>00195     dim_x=norm_header.<a class="code" href="structecat63__normheader.html#a546d6d89d6df87d2de51c1588884d5b5">dimension_1</a>; dim_y=norm_header.<a class="code" href="structecat63__normheader.html#aa49aa059f33fad5d960b044da8076fe7">dimension_2</a>;
<a name="l00196"></a>00196   }
<a name="l00197"></a>00197   pxlNr=dim_x*dim_y;
<a name="l00198"></a>00198   <span class="keywordflow">if</span>(ret) {
<a name="l00199"></a>00199     sprintf(<a class="code" href="ecat63_8h.html#a1a4fc8f123b2ef83d928b63743aa49d9">ecat63errmsg</a>, <span class="stringliteral">&quot;cannot read matrix %u subheader&quot;</span>, mlist.<a class="code" href="structMATRIXLIST.html#a42676745379d69392b07b5c29626f6f9">matdir</a>[m].<a class="code" href="structMatDir.html#aeb0291ec1f5ac237c1e587ed3d23b1bb">matnum</a>);
<a name="l00200"></a>00200     <a class="code" href="ecat63ml_8c.html#a2d931d7e3d4e21159731b7c480c209b9">ecat63EmptyMatlist</a>(&amp;mlist); fclose(fp); <span class="keywordflow">return</span>(8);
<a name="l00201"></a>00201   }
<a name="l00202"></a>00202 
<a name="l00203"></a>00203   <span class="comment">/* Allocate memory for ECAT data matrix */</span>
<a name="l00204"></a>00204   <span class="keywordflow">if</span>(<a class="code" href="img_8h.html#a0d66ed136e5992b7b00ce6f43bad1439">IMG_TEST</a>&gt;1) printf(<span class="stringliteral">&quot;allocating memory for %d blocks\n&quot;</span>, blkNr);
<a name="l00205"></a>00205   mdata=(<span class="keywordtype">char</span>*)malloc(blkNr*<a class="code" href="ecat63_8h.html#abdf75c7aade8a596594e8e7ce8b16872">MatBLKSIZE</a>); <span class="keywordflow">if</span>(mdata==NULL) {
<a name="l00206"></a>00206     strcpy(<a class="code" href="ecat63_8h.html#a1a4fc8f123b2ef83d928b63743aa49d9">ecat63errmsg</a>, <span class="stringliteral">&quot;out of memory&quot;</span>);
<a name="l00207"></a>00207     fclose(fp); <a class="code" href="ecat63ml_8c.html#a2d931d7e3d4e21159731b7c480c209b9">ecat63EmptyMatlist</a>(&amp;mlist); <span class="keywordflow">return</span>(8);
<a name="l00208"></a>00208   }
<a name="l00209"></a>00209   <span class="comment">/* Allocate memory for whole img data */</span>
<a name="l00210"></a>00210   ret=<a class="code" href="img_8c.html#a9b2670da9c7685e6d53058cdf1db1199">imgAllocate</a>(img, planeNr, dim_y, dim_x, frameNr);
<a name="l00211"></a>00211   <span class="keywordflow">if</span>(ret) {
<a name="l00212"></a>00212     sprintf(<a class="code" href="ecat63_8h.html#a1a4fc8f123b2ef83d928b63743aa49d9">ecat63errmsg</a>, <span class="stringliteral">&quot;out of memory (%d)&quot;</span>, ret);
<a name="l00213"></a>00213     fclose(fp); <a class="code" href="ecat63ml_8c.html#a2d931d7e3d4e21159731b7c480c209b9">ecat63EmptyMatlist</a>(&amp;mlist); free(mdata); <span class="keywordflow">return</span>(9);
<a name="l00214"></a>00214   }
<a name="l00215"></a>00215 
<a name="l00216"></a>00216   <span class="comment">/* Fill img info with ECAT main and sub header information */</span>
<a name="l00217"></a>00217   img-&gt;<a class="code" href="structIMG.html#a7f83c746c35583a9fa323b94d7ea5fb5">scanner</a>=main_header.<a class="code" href="structecat63__mainheader.html#a90a0ac55f8a40ddcf53446ee30e2aa7a">system_type</a>;
<a name="l00218"></a>00218   img-&gt;<a class="code" href="structIMG.html#a53ee896ca7a94425dcf45c51eaf0a1d3">unit</a>=main_header.<a class="code" href="structecat63__mainheader.html#ad8b7b38c78851f5724f8e2095d850271">calibration_units</a>; <span class="comment">/* this continues below */</span>
<a name="l00219"></a>00219   strncpy(img-&gt;<a class="code" href="structIMG.html#ab8bcc846c896a26e5aac045b118fd5cf">radiopharmaceutical</a>, main_header.<a class="code" href="structecat63__mainheader.html#a51129743a09356f7b83e11fa0865d17d">radiopharmaceutical</a>, 32);
<a name="l00220"></a>00220   img-&gt;<a class="code" href="structIMG.html#ac9c048a9dc8205b22518b05486d8030b">isotopeHalflife</a>=main_header.<a class="code" href="structecat63__mainheader.html#aa80e2c3fda2047135338e9525b48fb17">isotope_halflife</a>;
<a name="l00221"></a>00221   memset(&amp;scanStart, 0, <span class="keyword">sizeof</span>(<span class="keyword">struct</span> tm));
<a name="l00222"></a>00222   scanStart.tm_year=main_header.<a class="code" href="structecat63__mainheader.html#ac50ce9695fe8b410dc42d611a9c3bff7">scan_start_year</a>-1900;
<a name="l00223"></a>00223   scanStart.tm_mon=main_header.<a class="code" href="structecat63__mainheader.html#accef159de133ceecb8712a22b9aaa261">scan_start_month</a>-1;
<a name="l00224"></a>00224   scanStart.tm_mday=main_header.<a class="code" href="structecat63__mainheader.html#a2d2676e349d9446fba65f1185b22b6c9">scan_start_day</a>; scanStart.tm_yday=0;
<a name="l00225"></a>00225   scanStart.tm_hour=main_header.<a class="code" href="structecat63__mainheader.html#a1f67ed153d99b8f1e5edf24850312275">scan_start_hour</a>;
<a name="l00226"></a>00226   scanStart.tm_min=main_header.<a class="code" href="structecat63__mainheader.html#a152db2ee622ee372c1a0691ef9eea5a5">scan_start_minute</a>;
<a name="l00227"></a>00227   scanStart.tm_sec=main_header.<a class="code" href="structecat63__mainheader.html#ae5de61076a9b1bfd13c22bea60c6b933">scan_start_second</a>;
<a name="l00228"></a>00228   scanStart.tm_isdst=-1;
<a name="l00229"></a>00229   img-&gt;<a class="code" href="structIMG.html#a5db78f8b423fc42b80bba42e27c7b2c3">scanStart</a>=mktime(&amp;scanStart); <span class="keywordflow">if</span>(img-&gt;<a class="code" href="structIMG.html#a5db78f8b423fc42b80bba42e27c7b2c3">scanStart</a>==-1) img-&gt;<a class="code" href="structIMG.html#a5db78f8b423fc42b80bba42e27c7b2c3">scanStart</a>=0;
<a name="l00230"></a>00230   img-&gt;<a class="code" href="structIMG.html#af1d9f4bd7d58988eb4aa9f660a244a64">axialFOV</a>=10.*main_header.<a class="code" href="structecat63__mainheader.html#acfb971c6cfaffd74900fb23da894bef2">axial_fov</a>;
<a name="l00231"></a>00231   img-&gt;<a class="code" href="structIMG.html#a4a03c16266c7e7dcd6858aca05e7599f">transaxialFOV</a>=10.*main_header.<a class="code" href="structecat63__mainheader.html#a3545e9b7344313ca3f5c0e9f817d1fc4">transaxial_fov</a>;
<a name="l00232"></a>00232   strncpy(img-&gt;<a class="code" href="structIMG.html#ad76f79021c93175ec98839613ba4dcd2">studyNr</a>, main_header.<a class="code" href="structecat63__mainheader.html#ae42d92d4f2b85a68511f266f7cddfc8c">study_name</a>, MAX_STUDYNR_LEN);
<a name="l00233"></a>00233   strncpy(img-&gt;<a class="code" href="structIMG.html#a29013e391052918bd5aa6974eeec811d">patientName</a>, main_header.<a class="code" href="structecat63__mainheader.html#a7c66591db9e9dd727d6707ea1051df88">patient_name</a>, 31);
<a name="l00234"></a>00234   strncpy(img-&gt;<a class="code" href="structIMG.html#a7dc9c21dbaf6b609a32e54c708e089c1">patientID</a>, main_header.<a class="code" href="structecat63__mainheader.html#ac0ca7836b26f3bcc824110278ecb6508">patient_id</a>, 15);
<a name="l00235"></a>00235   img-&gt;<a class="code" href="structIMG.html#afc2a1d2417a8a3afe2c500173a05c472">sizez</a>=10.*main_header.<a class="code" href="structecat63__mainheader.html#afa9b56b592ebcc6a0c8a499c7b74562a">plane_separation</a>;
<a name="l00236"></a>00236   <span class="keywordflow">if</span>(main_header.<a class="code" href="structecat63__mainheader.html#aeb7fd4a6b107a810dcff5d82b6f58440">file_type</a>==<a class="code" href="ecat63_8h.html#aaf5f1adfda44941c4bf4de3e71219e4a">IMAGE_DATA</a>) {
<a name="l00237"></a>00237     img-&gt;<a class="code" href="structIMG.html#a0d9199e1c3c4bd94d56eb30e421b309c">type</a>=<a class="code" href="img_8h.html#ae8b5bb16b84adcbcd2bba3e10a36d62d">IMG_TYPE_IMAGE</a>;
<a name="l00238"></a>00238     <span class="keywordflow">if</span>(img-&gt;<a class="code" href="structIMG.html#a53ee896ca7a94425dcf45c51eaf0a1d3">unit</a>&lt;1) img-&gt;<a class="code" href="structIMG.html#a53ee896ca7a94425dcf45c51eaf0a1d3">unit</a>=image_header.<a class="code" href="structecat63__imageheader.html#a38136ac931d35627e8644ccc71d97aec">quant_units</a>;
<a name="l00239"></a>00239     img-&gt;<a class="code" href="structIMG.html#ab23da0c2295967727c6d33d0fbdc8c88">zoom</a>=image_header.<a class="code" href="structecat63__imageheader.html#a9a0fd8c173273797330c7c67effdffd6">recon_scale</a>;
<a name="l00240"></a>00240     <span class="keywordflow">if</span>(image_header.<a class="code" href="structecat63__imageheader.html#a46ec10bffd9ad4bd54271b68022bd41c">decay_corr_fctr</a>&gt;1.0) img-&gt;<a class="code" href="structIMG.html#a6ce801dea67ec8224e8cfc9aebb8a909">decayCorrected</a>=1;
<a name="l00241"></a>00241     img-&gt;<a class="code" href="structIMG.html#a02cc239e917e7ebf85e34f21448ff080">sizex</a>=img-&gt;<a class="code" href="structIMG.html#a80b0609c63f33934bf6e6678c6121cb3">sizey</a>=10.*image_header.<a class="code" href="structecat63__imageheader.html#a749a7dfb6443194317be2260fc7b5b7b">pixel_size</a>;
<a name="l00242"></a>00242     <span class="keywordflow">if</span>(img-&gt;<a class="code" href="structIMG.html#afc2a1d2417a8a3afe2c500173a05c472">sizez</a>&lt;10.*image_header.<a class="code" href="structecat63__imageheader.html#ac2b4f461866cfcbe8bf33939d461becc">slice_width</a>)
<a name="l00243"></a>00243       img-&gt;<a class="code" href="structIMG.html#afc2a1d2417a8a3afe2c500173a05c472">sizez</a>=10.*image_header.<a class="code" href="structecat63__imageheader.html#ac2b4f461866cfcbe8bf33939d461becc">slice_width</a>;
<a name="l00244"></a>00244   } <span class="keywordflow">else</span> <span class="keywordflow">if</span>(main_header.<a class="code" href="structecat63__mainheader.html#aeb7fd4a6b107a810dcff5d82b6f58440">file_type</a>==<a class="code" href="ecat63_8h.html#a7140d943b6f40ad3c4bdab5a2073c2f6">RAW_DATA</a>) {
<a name="l00245"></a>00245     img-&gt;<a class="code" href="structIMG.html#a0d9199e1c3c4bd94d56eb30e421b309c">type</a>=<a class="code" href="img_8h.html#a04e835f7aec92fcc1d4ecf37e0dd2e9c">IMG_TYPE_RAW</a>;
<a name="l00246"></a>00246     img-&gt;<a class="code" href="structIMG.html#a6ce801dea67ec8224e8cfc9aebb8a909">decayCorrected</a>=0;
<a name="l00247"></a>00247   } <span class="keywordflow">else</span> <span class="keywordflow">if</span>(main_header.<a class="code" href="structecat63__mainheader.html#aeb7fd4a6b107a810dcff5d82b6f58440">file_type</a>==<a class="code" href="ecat63_8h.html#a23271440af335f92b16c81abdff7818a">ATTN_DATA</a>) {
<a name="l00248"></a>00248     img-&gt;<a class="code" href="structIMG.html#a0d9199e1c3c4bd94d56eb30e421b309c">type</a>=<a class="code" href="img_8h.html#a04e835f7aec92fcc1d4ecf37e0dd2e9c">IMG_TYPE_RAW</a>;
<a name="l00249"></a>00249     img-&gt;<a class="code" href="structIMG.html#a6ce801dea67ec8224e8cfc9aebb8a909">decayCorrected</a>=0;
<a name="l00250"></a>00250   } <span class="keywordflow">else</span> <span class="keywordflow">if</span>(main_header.<a class="code" href="structecat63__mainheader.html#aeb7fd4a6b107a810dcff5d82b6f58440">file_type</a>==<a class="code" href="ecat63_8h.html#a978e691d4d6416577705c5c654096e02">NORM_DATA</a>) {
<a name="l00251"></a>00251     img-&gt;<a class="code" href="structIMG.html#a0d9199e1c3c4bd94d56eb30e421b309c">type</a>=<a class="code" href="img_8h.html#a04e835f7aec92fcc1d4ecf37e0dd2e9c">IMG_TYPE_RAW</a>;
<a name="l00252"></a>00252     img-&gt;<a class="code" href="structIMG.html#a6ce801dea67ec8224e8cfc9aebb8a909">decayCorrected</a>=0;
<a name="l00253"></a>00253   }
<a name="l00254"></a>00254   strncpy(img-&gt;<a class="code" href="structIMG.html#a3651200fbb19796a635502a7b7d2c2c3">studyDescription</a>, main_header.<a class="code" href="structecat63__mainheader.html#a6322ecb4779f20b48b19360b605127e7">study_description</a>, 32);
<a name="l00255"></a>00255   strncpy(img-&gt;<a class="code" href="structIMG.html#a7743f4bab187593657c7bd4b7e99fe32">userProcessCode</a>, main_header.<a class="code" href="structecat63__mainheader.html#aeae1e01c587128f945503d87cb6d3ada">user_process_code</a>, 10);
<a name="l00256"></a>00256   img-&gt;<a class="code" href="structIMG.html#a7743f4bab187593657c7bd4b7e99fe32">userProcessCode</a>[10]=(char)0;
<a name="l00257"></a>00257   <span class="comment">/* If valid study number is found in user_process_code, then take it */</span>  
<a name="l00258"></a>00258   <span class="keywordflow">if</span>(!img-&gt;<a class="code" href="structIMG.html#ad76f79021c93175ec98839613ba4dcd2">studyNr</a>[0] &amp;&amp; studynr_validity_check(img-&gt;<a class="code" href="structIMG.html#a7743f4bab187593657c7bd4b7e99fe32">userProcessCode</a>))
<a name="l00259"></a>00259     strcpy(img-&gt;<a class="code" href="structIMG.html#ad76f79021c93175ec98839613ba4dcd2">studyNr</a>, img-&gt;<a class="code" href="structIMG.html#a7743f4bab187593657c7bd4b7e99fe32">userProcessCode</a>);
<a name="l00260"></a>00260     
<a name="l00261"></a>00261   <span class="comment">/* Set _fileFormat */</span>
<a name="l00262"></a>00262   img-&gt;<a class="code" href="structIMG.html#a5e25c84c23270f974f1eb7c32a01bac7">_fileFormat</a>=<a class="code" href="img_8h.html#a7d502c1293f35b4392badbb9491ee95e">IMG_E63</a>;
<a name="l00263"></a>00263 
<a name="l00264"></a>00264   <span class="comment">/* Read one ECAT matrix at a time and put them to img */</span>
<a name="l00265"></a>00265   prev_plane=plane=-1; seqplane=-1;
<a name="l00266"></a>00266   <span class="keywordflow">for</span>(m=0; m&lt;mlist.<a class="code" href="structMATRIXLIST.html#a7fcfb983a42851d8562084ddde1f9fcd">matrixNr</a>; m++) <span class="keywordflow">if</span>(mlist.<a class="code" href="structMATRIXLIST.html#a42676745379d69392b07b5c29626f6f9">matdir</a>[m].<a class="code" href="structMatDir.html#a9096ac571f3dabee56894b264552f65f">matstat</a>==1) {
<a name="l00267"></a>00267     <span class="comment">/* get plane */</span>
<a name="l00268"></a>00268     <a class="code" href="ecat63ml_8c.html#af566384e63f743897f71d8ee41b3b292">mat_numdoc</a>(mlist.<a class="code" href="structMATRIXLIST.html#a42676745379d69392b07b5c29626f6f9">matdir</a>[m].<a class="code" href="structMatDir.html#aeb0291ec1f5ac237c1e587ed3d23b1bb">matnum</a>, &amp;matval);
<a name="l00269"></a>00269     plane=matval.<a class="code" href="structMatval.html#ac87d088d281d918936f987cd19148069">plane</a>;
<a name="l00270"></a>00270     <span class="comment">/* did plane change? */</span>
<a name="l00271"></a>00271     <span class="keywordflow">if</span>(plane!=prev_plane) {seqplane++; frame=1;} <span class="keywordflow">else</span> frame++;
<a name="l00272"></a>00272     prev_plane=plane;
<a name="l00273"></a>00273     img-&gt;<a class="code" href="structIMG.html#a78e3164d578cf4a570e930dceb10fb51">planeNumber</a>[seqplane]=plane;
<a name="l00274"></a>00274     <span class="comment">/* Read subheader */</span>
<a name="l00275"></a>00275     <span class="keywordflow">if</span>(main_header.<a class="code" href="structecat63__mainheader.html#aeb7fd4a6b107a810dcff5d82b6f58440">file_type</a>==<a class="code" href="ecat63_8h.html#aaf5f1adfda44941c4bf4de3e71219e4a">IMAGE_DATA</a>) {
<a name="l00276"></a>00276       ret=<a class="code" href="ecat63r_8c.html#adc36293804c18dd15771c61500841b7c">ecat63ReadImageheader</a>(fp, mlist.<a class="code" href="structMATRIXLIST.html#a42676745379d69392b07b5c29626f6f9">matdir</a>[m].<a class="code" href="structMatDir.html#af91ca45aca86269901b03480b5b6d741">strtblk</a>, &amp;image_header);
<a name="l00277"></a>00277       <span class="keywordflow">if</span>(dim_x!=image_header.<a class="code" href="structecat63__imageheader.html#a86aae28e4de4b65fa5de745aab0bf082">dimension_1</a> || dim_y!=image_header.<a class="code" href="structecat63__imageheader.html#ad53dbc60f5f5a34b7327abbf0d609d5d">dimension_2</a>) ret=1;
<a name="l00278"></a>00278       scale=image_header.<a class="code" href="structecat63__imageheader.html#ac4ff92a4d0a9b55e3647bfb45af9d381">quant_scale</a>;
<a name="l00279"></a>00279       <span class="keywordflow">if</span>(image_header.<a class="code" href="structecat63__imageheader.html#aa50b6a76225241de1056e26de450fb1c">ecat_calibration_fctr</a>&gt;0.0
<a name="l00280"></a>00280          &amp;&amp; fabs(main_header.<a class="code" href="structecat63__mainheader.html#ab8dd149fc8b61f8ccd115799e419f7e1">calibration_factor</a>/image_header.<a class="code" href="structecat63__imageheader.html#aa50b6a76225241de1056e26de450fb1c">ecat_calibration_fctr</a>-1.0)&gt;0.0001)
<a name="l00281"></a>00281         scale*=image_header.<a class="code" href="structecat63__imageheader.html#aa50b6a76225241de1056e26de450fb1c">ecat_calibration_fctr</a>;
<a name="l00282"></a>00282       <span class="keywordflow">if</span>(img-&gt;<a class="code" href="structIMG.html#a53ee896ca7a94425dcf45c51eaf0a1d3">unit</a>==0 &amp;&amp; image_header.<a class="code" href="structecat63__imageheader.html#a38136ac931d35627e8644ccc71d97aec">quant_units</a>&gt;0) img-&gt;<a class="code" href="structIMG.html#a53ee896ca7a94425dcf45c51eaf0a1d3">unit</a>=image_header.<a class="code" href="structecat63__imageheader.html#a38136ac931d35627e8644ccc71d97aec">quant_units</a>;
<a name="l00283"></a>00283       img-&gt;<a class="code" href="structIMG.html#a780bf2ffdee9e977a3a51febb7696701">_dataType</a>=image_header.<a class="code" href="structecat63__imageheader.html#a00da8baaaefa0ca83e0c12636b298196">data_type</a>;
<a name="l00284"></a>00284       img-&gt;<a class="code" href="structIMG.html#a8ff22fc209b6f44ad14341c8644788d2">start</a>[frame-1]=image_header.<a class="code" href="structecat63__imageheader.html#a14bdbc2c5ce62d9ed0c57514b02f8f0e">frame_start_time</a>/1000.;
<a name="l00285"></a>00285       img-&gt;<a class="code" href="structIMG.html#aa2b629a51ca62bcafad0a66d32e1ca8b">end</a>[frame-1]=img-&gt;<a class="code" href="structIMG.html#a8ff22fc209b6f44ad14341c8644788d2">start</a>[frame-1]+image_header.<a class="code" href="structecat63__imageheader.html#ae4fba67f8fb4e7f72f4d74b215b39058">frame_duration</a>/1000.;
<a name="l00286"></a>00286       img-&gt;<a class="code" href="structIMG.html#af7c69142be89fac081e7f8bc354b14c8">mid</a>[frame-1]=0.5*(img-&gt;<a class="code" href="structIMG.html#a8ff22fc209b6f44ad14341c8644788d2">start</a>[frame-1]+img-&gt;<a class="code" href="structIMG.html#aa2b629a51ca62bcafad0a66d32e1ca8b">end</a>[frame-1]);
<a name="l00287"></a>00287       <span class="keywordflow">if</span>(image_header.<a class="code" href="structecat63__imageheader.html#a46ec10bffd9ad4bd54271b68022bd41c">decay_corr_fctr</a>&gt;1.0)
<a name="l00288"></a>00288         img-&gt;<a class="code" href="structIMG.html#abf0ad6e681d08c3248dbd9837afa9973">decayCorrFactor</a>[frame-1]=image_header.<a class="code" href="structecat63__imageheader.html#a46ec10bffd9ad4bd54271b68022bd41c">decay_corr_fctr</a>;
<a name="l00289"></a>00289     } <span class="keywordflow">else</span> <span class="keywordflow">if</span>(main_header.<a class="code" href="structecat63__mainheader.html#aeb7fd4a6b107a810dcff5d82b6f58440">file_type</a>==<a class="code" href="ecat63_8h.html#a7140d943b6f40ad3c4bdab5a2073c2f6">RAW_DATA</a>) {
<a name="l00290"></a>00290       ret=<a class="code" href="ecat63r_8c.html#a811c9c52c52f1c749ee6cb0f7a51f884">ecat63ReadScanheader</a>(fp, mlist.<a class="code" href="structMATRIXLIST.html#a42676745379d69392b07b5c29626f6f9">matdir</a>[m].<a class="code" href="structMatDir.html#af91ca45aca86269901b03480b5b6d741">strtblk</a>, &amp;scan_header);
<a name="l00291"></a>00291       <span class="keywordflow">if</span>(dim_x!=scan_header.<a class="code" href="structecat63__scanheader.html#adee5ad20def49d6f13da7efde9da4e3e">dimension_1</a> || dim_y!=scan_header.<a class="code" href="structecat63__scanheader.html#a87c12560397fa7408d95ad30d1800f92">dimension_2</a>) ret=1;
<a name="l00292"></a>00292       scale=scan_header.<a class="code" href="structecat63__scanheader.html#acfabab41eaa593a0625a43057bd9b558">scale_factor</a>;
<a name="l00293"></a>00293       <span class="keywordflow">if</span>(scan_header.<a class="code" href="structecat63__scanheader.html#a3077aca1fa9f9b64c57f4b6eb19780fb">loss_correction_fctr</a>&gt;0.0) scale*=scan_header.<a class="code" href="structecat63__scanheader.html#a3077aca1fa9f9b64c57f4b6eb19780fb">loss_correction_fctr</a>;
<a name="l00294"></a>00294       img-&gt;<a class="code" href="structIMG.html#a780bf2ffdee9e977a3a51febb7696701">_dataType</a>=scan_header.<a class="code" href="structecat63__scanheader.html#ad1ee12caf8404e9237c9b14d95711109">data_type</a>;
<a name="l00295"></a>00295       img-&gt;<a class="code" href="structIMG.html#a8ff22fc209b6f44ad14341c8644788d2">start</a>[frame-1]=scan_header.<a class="code" href="structecat63__scanheader.html#aa7214f91108a9d7a5bec6f0edbe3493d">frame_start_time</a>/1000.;
<a name="l00296"></a>00296       img-&gt;<a class="code" href="structIMG.html#aa2b629a51ca62bcafad0a66d32e1ca8b">end</a>[frame-1]=img-&gt;<a class="code" href="structIMG.html#a8ff22fc209b6f44ad14341c8644788d2">start</a>[frame-1]+scan_header.<a class="code" href="structecat63__scanheader.html#a253426410960e4047acfb591c24e179b">frame_duration</a>/1000.;
<a name="l00297"></a>00297       img-&gt;<a class="code" href="structIMG.html#af7c69142be89fac081e7f8bc354b14c8">mid</a>[frame-1]=0.5*(img-&gt;<a class="code" href="structIMG.html#a8ff22fc209b6f44ad14341c8644788d2">start</a>[frame-1]+img-&gt;<a class="code" href="structIMG.html#aa2b629a51ca62bcafad0a66d32e1ca8b">end</a>[frame-1]);
<a name="l00298"></a>00298       img-&gt;<a class="code" href="structIMG.html#a399dae5b27dda8d5e1b0e96c885513e4">sampleDistance</a>=10.0*scan_header.<a class="code" href="structecat63__scanheader.html#acb676ed22b052fbaa07bd044263ac279">sample_distance</a>;
<a name="l00299"></a>00299       img-&gt;<a class="code" href="structIMG.html#a76d63a001b8569d9f80ccb325e064be1">prompts</a>[frame-1]=(float)scan_header.<a class="code" href="structecat63__scanheader.html#a28b007d345ada719bb886fd7a2683d76">prompts</a>;
<a name="l00300"></a>00300       img-&gt;<a class="code" href="structIMG.html#ae47ebbbdc0c308f473fec801a2df513d">randoms</a>[frame-1]=(<span class="keywordtype">float</span>)scan_header.<a class="code" href="structecat63__scanheader.html#ad0a2468779aec56e8d45ca685834eb16">delayed</a>;
<a name="l00301"></a>00301     } <span class="keywordflow">else</span> <span class="keywordflow">if</span>(main_header.<a class="code" href="structecat63__mainheader.html#aeb7fd4a6b107a810dcff5d82b6f58440">file_type</a>==<a class="code" href="ecat63_8h.html#a23271440af335f92b16c81abdff7818a">ATTN_DATA</a>) {
<a name="l00302"></a>00302       ret=<a class="code" href="ecat63r_8c.html#ac9c08bd1e03ddc4f4a8c83a5ea198e05">ecat63ReadAttnheader</a>(fp, mlist.<a class="code" href="structMATRIXLIST.html#a42676745379d69392b07b5c29626f6f9">matdir</a>[m].<a class="code" href="structMatDir.html#af91ca45aca86269901b03480b5b6d741">strtblk</a>, &amp;attn_header);
<a name="l00303"></a>00303       <span class="keywordflow">if</span>(dim_x!=attn_header.<a class="code" href="structecat63__attnheader.html#acbea9636493630fc7bdc3de4fcd4cfa2">dimension_1</a> || dim_y!=attn_header.<a class="code" href="structecat63__attnheader.html#af9fa1e4491aa3321b4ce99f54e5ebb6e">dimension_2</a>) ret=1;
<a name="l00304"></a>00304       scale=attn_header.<a class="code" href="structecat63__attnheader.html#a649891350c3b30214f43ca2d640a0e47">scale_factor</a>;
<a name="l00305"></a>00305       img-&gt;<a class="code" href="structIMG.html#a780bf2ffdee9e977a3a51febb7696701">_dataType</a>=attn_header.<a class="code" href="structecat63__attnheader.html#ac5bea9d6b3dae0b4c87d5e66a0d2006e">data_type</a>;
<a name="l00306"></a>00306     } <span class="keywordflow">else</span> <span class="keywordflow">if</span>(main_header.<a class="code" href="structecat63__mainheader.html#aeb7fd4a6b107a810dcff5d82b6f58440">file_type</a>==<a class="code" href="ecat63_8h.html#a978e691d4d6416577705c5c654096e02">NORM_DATA</a>) {
<a name="l00307"></a>00307       ret=<a class="code" href="ecat63r_8c.html#a6a169297491f0f8a734247467cfb2b89">ecat63ReadNormheader</a>(fp, mlist.<a class="code" href="structMATRIXLIST.html#a42676745379d69392b07b5c29626f6f9">matdir</a>[m].<a class="code" href="structMatDir.html#af91ca45aca86269901b03480b5b6d741">strtblk</a>, &amp;norm_header);
<a name="l00308"></a>00308       <span class="keywordflow">if</span>(dim_x!=norm_header.<a class="code" href="structecat63__normheader.html#a546d6d89d6df87d2de51c1588884d5b5">dimension_1</a> || dim_y!=norm_header.<a class="code" href="structecat63__normheader.html#aa49aa059f33fad5d960b044da8076fe7">dimension_2</a>) ret=1;
<a name="l00309"></a>00309       scale=norm_header.<a class="code" href="structecat63__normheader.html#a914977ee68c14326a4551abae57fc9ab">scale_factor</a>;
<a name="l00310"></a>00310       img-&gt;<a class="code" href="structIMG.html#a780bf2ffdee9e977a3a51febb7696701">_dataType</a>=norm_header.<a class="code" href="structecat63__normheader.html#ae7d4136070d36e9edbe684a80e39b942">data_type</a>;
<a name="l00311"></a>00311     } <span class="keywordflow">else</span> img-&gt;<a class="code" href="structIMG.html#a780bf2ffdee9e977a3a51febb7696701">_dataType</a>=-1;
<a name="l00312"></a>00312     <span class="keywordflow">if</span>(ret) {
<a name="l00313"></a>00313       sprintf(<a class="code" href="ecat63_8h.html#a1a4fc8f123b2ef83d928b63743aa49d9">ecat63errmsg</a>, <span class="stringliteral">&quot;cannot read matrix %u subheader&quot;</span>, mlist.<a class="code" href="structMATRIXLIST.html#a42676745379d69392b07b5c29626f6f9">matdir</a>[m].<a class="code" href="structMatDir.html#aeb0291ec1f5ac237c1e587ed3d23b1bb">matnum</a>);
<a name="l00314"></a>00314       <a class="code" href="ecat63ml_8c.html#a2d931d7e3d4e21159731b7c480c209b9">ecat63EmptyMatlist</a>(&amp;mlist); free(mdata); fclose(fp); <span class="keywordflow">return</span>(10);
<a name="l00315"></a>00315     }
<a name="l00316"></a>00316     <span class="keywordflow">if</span>(main_header.<a class="code" href="structecat63__mainheader.html#ab8dd149fc8b61f8ccd115799e419f7e1">calibration_factor</a>&gt;0.0) scale*=main_header.<a class="code" href="structecat63__mainheader.html#ab8dd149fc8b61f8ccd115799e419f7e1">calibration_factor</a>;
<a name="l00317"></a>00317     <span class="keywordflow">if</span>(<a class="code" href="img_8h.html#a0d66ed136e5992b7b00ce6f43bad1439">IMG_TEST</a>&gt;2) printf(<span class="stringliteral">&quot;scale=%e datatype=%d\n&quot;</span>, scale, img-&gt;<a class="code" href="structIMG.html#a780bf2ffdee9e977a3a51febb7696701">_dataType</a>);
<a name="l00318"></a>00318     <span class="comment">/* Read the pixel data */</span>
<a name="l00319"></a>00319     ret=<a class="code" href="ecat63r_8c.html#a7f3456ddf0f774026d462df66bf1210b">ecat63ReadMatdata</a>(fp, mlist.<a class="code" href="structMATRIXLIST.html#a42676745379d69392b07b5c29626f6f9">matdir</a>[m].<a class="code" href="structMatDir.html#af91ca45aca86269901b03480b5b6d741">strtblk</a>+1,
<a name="l00320"></a>00320          mlist.<a class="code" href="structMATRIXLIST.html#a42676745379d69392b07b5c29626f6f9">matdir</a>[m].<a class="code" href="structMatDir.html#ad1781958d48d68431d0c3b630093994f">endblk</a>-mlist.<a class="code" href="structMATRIXLIST.html#a42676745379d69392b07b5c29626f6f9">matdir</a>[m].<a class="code" href="structMatDir.html#af91ca45aca86269901b03480b5b6d741">strtblk</a>,
<a name="l00321"></a>00321          mdata, img-&gt;<a class="code" href="structIMG.html#a780bf2ffdee9e977a3a51febb7696701">_dataType</a>);
<a name="l00322"></a>00322     <span class="keywordflow">if</span>(ret) {
<a name="l00323"></a>00323       strcpy(<a class="code" href="ecat63_8h.html#a1a4fc8f123b2ef83d928b63743aa49d9">ecat63errmsg</a>, <span class="stringliteral">&quot;cannot read matrix data&quot;</span>);
<a name="l00324"></a>00324       <a class="code" href="ecat63ml_8c.html#a2d931d7e3d4e21159731b7c480c209b9">ecat63EmptyMatlist</a>(&amp;mlist); free(mdata); fclose(fp); <span class="keywordflow">return</span>(11);
<a name="l00325"></a>00325     }
<a name="l00326"></a>00326     <span class="keywordflow">if</span>(img-&gt;<a class="code" href="structIMG.html#a780bf2ffdee9e977a3a51febb7696701">_dataType</a>==<a class="code" href="ecat63_8h.html#a8e1f9f0fd436e762641718456852ee80">BYTE_TYPE</a>) {
<a name="l00327"></a>00327       <span class="keywordflow">for</span>(i=0, mptr=mdata; i&lt;dim_y; i++) <span class="keywordflow">for</span>(j=0; j&lt;dim_x; j++, mptr++) {
<a name="l00328"></a>00328         img-&gt;<a class="code" href="structIMG.html#a43e2c98dc0728731601a76abd51bb935">m</a>[seqplane][i][j][frame-1]=scale*(float)(*mptr);
<a name="l00329"></a>00329       }
<a name="l00330"></a>00330     } <span class="keywordflow">else</span> <span class="keywordflow">if</span>(img-&gt;<a class="code" href="structIMG.html#a780bf2ffdee9e977a3a51febb7696701">_dataType</a>==<a class="code" href="ecat63_8h.html#ab6ed0aaf03f063c606604089878ed91a">VAX_I2</a> || img-&gt;<a class="code" href="structIMG.html#a780bf2ffdee9e977a3a51febb7696701">_dataType</a>==<a class="code" href="ecat63_8h.html#aebd1500a1497c6489f1820442db218d2">SUN_I2</a>) {
<a name="l00331"></a>00331       <span class="keywordflow">for</span>(i=0, mptr=mdata; i&lt;dim_y; i++) <span class="keywordflow">for</span>(j=0; j&lt;dim_x; j++, mptr+=2) {
<a name="l00332"></a>00332         sptr=(<span class="keywordtype">short</span> <span class="keywordtype">int</span>*)mptr;
<a name="l00333"></a>00333         img-&gt;<a class="code" href="structIMG.html#a43e2c98dc0728731601a76abd51bb935">m</a>[seqplane][i][j][frame-1]=scale*(float)(*sptr);
<a name="l00334"></a>00334       }
<a name="l00335"></a>00335     } <span class="keywordflow">else</span> <span class="keywordflow">if</span>(img-&gt;<a class="code" href="structIMG.html#a780bf2ffdee9e977a3a51febb7696701">_dataType</a>==<a class="code" href="ecat63_8h.html#a91402eabd36b6383a537f5ba993e1d13">VAX_I4</a> || img-&gt;<a class="code" href="structIMG.html#a780bf2ffdee9e977a3a51febb7696701">_dataType</a>==<a class="code" href="ecat63_8h.html#a105892e015b38ae62e69684acf6df31d">SUN_I4</a>) {
<a name="l00336"></a>00336       <span class="keywordflow">for</span>(i=0, mptr=mdata; i&lt;dim_y; i++) <span class="keywordflow">for</span>(j=0; j&lt;dim_x; j++, mptr+=4) {
<a name="l00337"></a>00337         iptr=(<span class="keywordtype">int</span>*)mptr;
<a name="l00338"></a>00338         img-&gt;<a class="code" href="structIMG.html#a43e2c98dc0728731601a76abd51bb935">m</a>[seqplane][i][j][frame-1]=1.0; <span class="comment">/*scale*(float)(*iptr);*/</span>
<a name="l00339"></a>00339       }
<a name="l00340"></a>00340     } <span class="keywordflow">else</span> <span class="keywordflow">if</span>(img-&gt;<a class="code" href="structIMG.html#a780bf2ffdee9e977a3a51febb7696701">_dataType</a>==<a class="code" href="ecat63_8h.html#a43d671e0f827418673872adcd63418c4">VAX_R4</a> || img-&gt;<a class="code" href="structIMG.html#a780bf2ffdee9e977a3a51febb7696701">_dataType</a>==<a class="code" href="ecat63_8h.html#a6001c489ee0296a6dca313ee3bfe4412">IEEE_R4</a>) {
<a name="l00341"></a>00341       <span class="keywordflow">for</span>(i=0, mptr=mdata; i&lt;dim_y; i++) <span class="keywordflow">for</span>(j=0; j&lt;dim_x; j++, mptr+=4) {
<a name="l00342"></a>00342         memcpy(&amp;img-&gt;<a class="code" href="structIMG.html#a43e2c98dc0728731601a76abd51bb935">m</a>[seqplane][i][j][frame-1], mptr, 4);
<a name="l00343"></a>00343         img-&gt;<a class="code" href="structIMG.html#a43e2c98dc0728731601a76abd51bb935">m</a>[seqplane][i][j][frame-1]*=scale;
<a name="l00344"></a>00344       }
<a name="l00345"></a>00345     }
<a name="l00346"></a>00346   } <span class="comment">/* next matrix */</span>
<a name="l00347"></a>00347 
<a name="l00348"></a>00348   <span class="comment">/* Set the unit */</span>
<a name="l00349"></a>00349   <a class="code" href="imgunit_8c.html#a99853914e3480ab82c7163b0612e8b28">imgUnitFromEcat</a>(img, img-&gt;<a class="code" href="structIMG.html#a53ee896ca7a94425dcf45c51eaf0a1d3">unit</a>);
<a name="l00350"></a>00350 
<a name="l00351"></a>00351   <span class="comment">/* Free memory and close file */</span>
<a name="l00352"></a>00352   free(mdata);
<a name="l00353"></a>00353   <a class="code" href="ecat63ml_8c.html#a2d931d7e3d4e21159731b7c480c209b9">ecat63EmptyMatlist</a>(&amp;mlist);
<a name="l00354"></a>00354   fclose(fp);
<a name="l00355"></a>00355 
<a name="l00356"></a>00356   <span class="comment">/* For saving, only 2-byte VAX data types are allowed */</span>
<a name="l00357"></a>00357   <span class="keywordflow">if</span>(img-&gt;<a class="code" href="structIMG.html#a780bf2ffdee9e977a3a51febb7696701">_dataType</a>==<a class="code" href="ecat63_8h.html#a91402eabd36b6383a537f5ba993e1d13">VAX_I4</a> || img-&gt;<a class="code" href="structIMG.html#a780bf2ffdee9e977a3a51febb7696701">_dataType</a>==<a class="code" href="ecat63_8h.html#a43d671e0f827418673872adcd63418c4">VAX_R4</a>) img-&gt;<a class="code" href="structIMG.html#a780bf2ffdee9e977a3a51febb7696701">_dataType</a>=<a class="code" href="ecat63_8h.html#ab6ed0aaf03f063c606604089878ed91a">VAX_I2</a>;
<a name="l00358"></a>00358 
<a name="l00359"></a>00359   <span class="keywordflow">return</span>(0);
<a name="l00360"></a>00360 }
<a name="l00361"></a>00361 <span class="comment">/*****************************************************************************/</span>
<a name="l00362"></a>00362 
<a name="l00363"></a>00363 <span class="comment">/*****************************************************************************/</span>
<a name="l00374"></a><a class="code" href="imgfile_8h.html#a443e0885c38b074c760a5b9a88554ce3">00374</a> <span class="keywordtype">int</span> <a class="code" href="img__e63_8c.html#a443e0885c38b074c760a5b9a88554ce3">ecat63WriteAllImg</a>(<span class="keyword">const</span> <span class="keywordtype">char</span> *fname, <a class="code" href="structIMG.html">IMG</a> *img) {
<a name="l00375"></a>00375   <span class="keywordtype">int</span>                 frame, plane, n, i, j, m, ret=0;
<a name="l00376"></a>00376   <span class="keywordtype">float</span>               f, fmax, fmin, g, scale;
<a name="l00377"></a>00377   <span class="keywordtype">short</span> <span class="keywordtype">int</span>          *sdata, *sptr, smin, smax;
<a name="l00378"></a>00378   FILE               *fp;
<a name="l00379"></a>00379   <a class="code" href="structecat63__mainheader.html">ECAT63_mainheader</a>   main_header;
<a name="l00380"></a>00380   <a class="code" href="structecat63__imageheader.html">ECAT63_imageheader</a>  image_header;
<a name="l00381"></a>00381   <a class="code" href="structecat63__scanheader.html">ECAT63_scanheader</a>   scan_header;
<a name="l00382"></a>00382   <span class="keyword">struct </span>tm          *scanStart;
<a name="l00383"></a>00383 
<a name="l00384"></a>00384 
<a name="l00385"></a>00385   <span class="keywordflow">if</span>(<a class="code" href="img_8h.html#a0d66ed136e5992b7b00ce6f43bad1439">IMG_TEST</a>) printf(<span class="stringliteral">&quot;ecat63WriteAllImg(%s, *img)\n&quot;</span>, fname);
<a name="l00386"></a>00386   <span class="comment">/* Check the arguments */</span>
<a name="l00387"></a>00387   <span class="keywordflow">if</span>(fname==NULL) {strcpy(<a class="code" href="ecat63_8h.html#a1a4fc8f123b2ef83d928b63743aa49d9">ecat63errmsg</a>, <span class="stringliteral">&quot;invalid ECAT filename&quot;</span>); <span class="keywordflow">return</span>(1);}
<a name="l00388"></a>00388   <span class="keywordflow">if</span>(img==NULL || img-&gt;<a class="code" href="structIMG.html#a5b8bdc61088df4a3c3f89c31895b14a4">status</a>!=<a class="code" href="img_8h.html#a3117b1b0649d3761dcda1395202129e5">IMG_STATUS_OCCUPIED</a>) {
<a name="l00389"></a>00389     strcpy(<a class="code" href="ecat63_8h.html#a1a4fc8f123b2ef83d928b63743aa49d9">ecat63errmsg</a>, <span class="stringliteral">&quot;image data is empty&quot;</span>); <span class="keywordflow">return</span>(2);}
<a name="l00390"></a>00390   <span class="keywordflow">if</span>(img-&gt;<a class="code" href="structIMG.html#a780bf2ffdee9e977a3a51febb7696701">_dataType</a>&lt;1) img-&gt;<a class="code" href="structIMG.html#a780bf2ffdee9e977a3a51febb7696701">_dataType</a>=<a class="code" href="ecat63_8h.html#ab6ed0aaf03f063c606604089878ed91a">VAX_I2</a>;
<a name="l00391"></a>00391 
<a name="l00392"></a>00392   <span class="comment">/* Initiate headers */</span>
<a name="l00393"></a>00393   memset(&amp;main_header, 0, <span class="keyword">sizeof</span>(<a class="code" href="structecat63__mainheader.html">ECAT63_mainheader</a>));
<a name="l00394"></a>00394   memset(&amp;image_header,0, <span class="keyword">sizeof</span>(<a class="code" href="structecat63__imageheader.html">ECAT63_imageheader</a>));
<a name="l00395"></a>00395   memset(&amp;scan_header, 0, <span class="keyword">sizeof</span>(<a class="code" href="structecat63__scanheader.html">ECAT63_scanheader</a>));
<a name="l00396"></a>00396 
<a name="l00397"></a>00397   <span class="comment">/* Make a main header */</span>
<a name="l00398"></a>00398   main_header.<a class="code" href="structecat63__mainheader.html#a433a5fddd8c83644a9f081001815c6e6">sw_version</a>=2;
<a name="l00399"></a>00399   main_header.<a class="code" href="structecat63__mainheader.html#aec1a2e31ad9fa2e9d03220565bc3cfa0">num_planes</a>=img-&gt;<a class="code" href="structIMG.html#a9c04780b47e6a627a2b700b76352c3fc">dimz</a>;  
<a name="l00400"></a>00400   main_header.<a class="code" href="structecat63__mainheader.html#a01ad1f4be366fb3ad82da61022e9761c">num_frames</a>=img-&gt;<a class="code" href="structIMG.html#a77605d4aa64b86294590c79e9a761b15">dimt</a>;  
<a name="l00401"></a>00401   main_header.<a class="code" href="structecat63__mainheader.html#a5038021b6504d93e304931a95af64746">num_gates</a>=1;
<a name="l00402"></a>00402   main_header.<a class="code" href="structecat63__mainheader.html#ad8cbcc286f61bd37eb2a6f196b88a4bb">num_bed_pos</a>=1;
<a name="l00403"></a>00403   <span class="keywordflow">if</span>(img-&gt;<a class="code" href="structIMG.html#a0d9199e1c3c4bd94d56eb30e421b309c">type</a>==<a class="code" href="img_8h.html#ae8b5bb16b84adcbcd2bba3e10a36d62d">IMG_TYPE_IMAGE</a>) main_header.<a class="code" href="structecat63__mainheader.html#aeb7fd4a6b107a810dcff5d82b6f58440">file_type</a>=<a class="code" href="ecat63_8h.html#aaf5f1adfda44941c4bf4de3e71219e4a">IMAGE_DATA</a>;
<a name="l00404"></a>00404   <span class="keywordflow">else</span> main_header.<a class="code" href="structecat63__mainheader.html#aeb7fd4a6b107a810dcff5d82b6f58440">file_type</a>=<a class="code" href="ecat63_8h.html#a7140d943b6f40ad3c4bdab5a2073c2f6">RAW_DATA</a>;
<a name="l00405"></a>00405   main_header.<a class="code" href="structecat63__mainheader.html#a727d6abe8019b32f33965c76ca19a9ee">data_type</a>=img-&gt;<a class="code" href="structIMG.html#a780bf2ffdee9e977a3a51febb7696701">_dataType</a>;
<a name="l00406"></a>00406   <span class="keywordflow">if</span>(img-&gt;<a class="code" href="structIMG.html#a7f83c746c35583a9fa323b94d7ea5fb5">scanner</a>&gt;0) main_header.<a class="code" href="structecat63__mainheader.html#a90a0ac55f8a40ddcf53446ee30e2aa7a">system_type</a>=img-&gt;<a class="code" href="structIMG.html#a7f83c746c35583a9fa323b94d7ea5fb5">scanner</a>;
<a name="l00407"></a>00407   <span class="keywordflow">else</span> main_header.<a class="code" href="structecat63__mainheader.html#a90a0ac55f8a40ddcf53446ee30e2aa7a">system_type</a>=<a class="code" href="ecat63_8h.html#a4aad8bedf2b4765e35f5933a7c6b8558">ECAT63_SYSTEM_TYPE_DEFAULT</a>;
<a name="l00408"></a>00408   main_header.<a class="code" href="structecat63__mainheader.html#ab8dd149fc8b61f8ccd115799e419f7e1">calibration_factor</a>=1.0;
<a name="l00409"></a>00409   main_header.<a class="code" href="structecat63__mainheader.html#acfb971c6cfaffd74900fb23da894bef2">axial_fov</a>=img-&gt;<a class="code" href="structIMG.html#af1d9f4bd7d58988eb4aa9f660a244a64">axialFOV</a>/10.0;
<a name="l00410"></a>00410   main_header.<a class="code" href="structecat63__mainheader.html#a3545e9b7344313ca3f5c0e9f817d1fc4">transaxial_fov</a>=img-&gt;<a class="code" href="structIMG.html#a4a03c16266c7e7dcd6858aca05e7599f">transaxialFOV</a>/10.0;
<a name="l00411"></a>00411   main_header.<a class="code" href="structecat63__mainheader.html#afa9b56b592ebcc6a0c8a499c7b74562a">plane_separation</a>=img-&gt;<a class="code" href="structIMG.html#afc2a1d2417a8a3afe2c500173a05c472">sizez</a>/10.0;
<a name="l00412"></a>00412   main_header.<a class="code" href="structecat63__mainheader.html#ad8b7b38c78851f5724f8e2095d850271">calibration_units</a>=<a class="code" href="imgunit_8c.html#a0d8d16b27eaefdf56d32b5c4c51f3757">imgUnitToEcat6</a>(img);
<a name="l00413"></a>00413   strncpy(main_header.<a class="code" href="structecat63__mainheader.html#a51129743a09356f7b83e11fa0865d17d">radiopharmaceutical</a>, img-&gt;<a class="code" href="structIMG.html#ab8bcc846c896a26e5aac045b118fd5cf">radiopharmaceutical</a>, 32);
<a name="l00414"></a>00414   scanStart=localtime(&amp;img-&gt;<a class="code" href="structIMG.html#a5db78f8b423fc42b80bba42e27c7b2c3">scanStart</a>);
<a name="l00415"></a>00415   <span class="keywordflow">if</span>(scanStart!=NULL) {
<a name="l00416"></a>00416     main_header.<a class="code" href="structecat63__mainheader.html#ac50ce9695fe8b410dc42d611a9c3bff7">scan_start_year</a>=scanStart-&gt;tm_year+1900;
<a name="l00417"></a>00417     main_header.<a class="code" href="structecat63__mainheader.html#accef159de133ceecb8712a22b9aaa261">scan_start_month</a>=scanStart-&gt;tm_mon+1;
<a name="l00418"></a>00418     main_header.<a class="code" href="structecat63__mainheader.html#a2d2676e349d9446fba65f1185b22b6c9">scan_start_day</a>=scanStart-&gt;tm_mday;
<a name="l00419"></a>00419     main_header.<a class="code" href="structecat63__mainheader.html#a1f67ed153d99b8f1e5edf24850312275">scan_start_hour</a>=scanStart-&gt;tm_hour;
<a name="l00420"></a>00420     main_header.<a class="code" href="structecat63__mainheader.html#a152db2ee622ee372c1a0691ef9eea5a5">scan_start_minute</a>=scanStart-&gt;tm_min;
<a name="l00421"></a>00421     main_header.<a class="code" href="structecat63__mainheader.html#ae5de61076a9b1bfd13c22bea60c6b933">scan_start_second</a>=scanStart-&gt;tm_sec;
<a name="l00422"></a>00422   } <span class="keywordflow">else</span> {
<a name="l00423"></a>00423     main_header.<a class="code" href="structecat63__mainheader.html#ac50ce9695fe8b410dc42d611a9c3bff7">scan_start_year</a>=1900;
<a name="l00424"></a>00424     main_header.<a class="code" href="structecat63__mainheader.html#accef159de133ceecb8712a22b9aaa261">scan_start_month</a>=1;
<a name="l00425"></a>00425     main_header.<a class="code" href="structecat63__mainheader.html#a2d2676e349d9446fba65f1185b22b6c9">scan_start_day</a>=1;
<a name="l00426"></a>00426     main_header.<a class="code" href="structecat63__mainheader.html#a1f67ed153d99b8f1e5edf24850312275">scan_start_hour</a>=0;
<a name="l00427"></a>00427     main_header.<a class="code" href="structecat63__mainheader.html#a152db2ee622ee372c1a0691ef9eea5a5">scan_start_minute</a>=0;
<a name="l00428"></a>00428     main_header.<a class="code" href="structecat63__mainheader.html#ae5de61076a9b1bfd13c22bea60c6b933">scan_start_second</a>=0;
<a name="l00429"></a>00429   }
<a name="l00430"></a>00430   main_header.<a class="code" href="structecat63__mainheader.html#aa80e2c3fda2047135338e9525b48fb17">isotope_halflife</a>=img-&gt;<a class="code" href="structIMG.html#ac9c048a9dc8205b22518b05486d8030b">isotopeHalflife</a>;
<a name="l00431"></a>00431   strcpy(main_header.<a class="code" href="structecat63__mainheader.html#ad5e1bd9b72bdc5e5cc820bf25231bef5">isotope_code</a>, <a class="code" href="imgdecay_8c.html#a14db419685f526306032a84343eed72c">imgIsotope</a>(img));
<a name="l00432"></a>00432   strcpy(main_header.<a class="code" href="structecat63__mainheader.html#ae42d92d4f2b85a68511f266f7cddfc8c">study_name</a>, img-&gt;<a class="code" href="structIMG.html#ad76f79021c93175ec98839613ba4dcd2">studyNr</a>);
<a name="l00433"></a>00433   strcpy(main_header.<a class="code" href="structecat63__mainheader.html#a7c66591db9e9dd727d6707ea1051df88">patient_name</a>, img-&gt;<a class="code" href="structIMG.html#a29013e391052918bd5aa6974eeec811d">patientName</a>);
<a name="l00434"></a>00434   strcpy(main_header.<a class="code" href="structecat63__mainheader.html#ac0ca7836b26f3bcc824110278ecb6508">patient_id</a>, img-&gt;<a class="code" href="structIMG.html#a7dc9c21dbaf6b609a32e54c708e089c1">patientID</a>);
<a name="l00435"></a>00435   strncpy(main_header.<a class="code" href="structecat63__mainheader.html#aeae1e01c587128f945503d87cb6d3ada">user_process_code</a>, img-&gt;<a class="code" href="structIMG.html#a7743f4bab187593657c7bd4b7e99fe32">userProcessCode</a>, 10);
<a name="l00436"></a>00436   strncpy(main_header.<a class="code" href="structecat63__mainheader.html#a6322ecb4779f20b48b19360b605127e7">study_description</a>, img-&gt;<a class="code" href="structIMG.html#a3651200fbb19796a635502a7b7d2c2c3">studyDescription</a>, 32);
<a name="l00437"></a>00437   <span class="keywordflow">if</span>(<a class="code" href="img_8h.html#a0d66ed136e5992b7b00ce6f43bad1439">IMG_TEST</a>) <a class="code" href="ecat63p_8c.html#a129d5f8c3d6135b9934cebc54d27bc47">ecat63PrintMainheader</a>(&amp;main_header, stdout);
<a name="l00438"></a>00438 
<a name="l00439"></a>00439   <span class="comment">/* Allocate memory for matrix data */</span>
<a name="l00440"></a>00440   sdata=(<span class="keywordtype">short</span> <span class="keywordtype">int</span>*)malloc(img-&gt;<a class="code" href="structIMG.html#a0818b82059710627a94282a793ff7030">dimx</a>*img-&gt;<a class="code" href="structIMG.html#aa17e87812503d3c142f31c08abcbf79d">dimy</a>*<span class="keyword">sizeof</span>(<span class="keywordtype">short</span> <span class="keywordtype">int</span>));
<a name="l00441"></a>00441   <span class="keywordflow">if</span>(sdata==NULL) {strcpy(<a class="code" href="ecat63_8h.html#a1a4fc8f123b2ef83d928b63743aa49d9">ecat63errmsg</a>, <span class="stringliteral">&quot;out of memory&quot;</span>); <span class="keywordflow">return</span>(4);}
<a name="l00442"></a>00442 
<a name="l00443"></a>00443   <span class="comment">/* Open output ECAT file */</span>
<a name="l00444"></a>00444   fp=<a class="code" href="ecat63w_8c.html#aa9545a4a59002bf59a77478977f479eb">ecat63Create</a>(fname, &amp;main_header);
<a name="l00445"></a>00445   <span class="keywordflow">if</span>(fp==NULL) {strcpy(<a class="code" href="ecat63_8h.html#a1a4fc8f123b2ef83d928b63743aa49d9">ecat63errmsg</a>, <span class="stringliteral">&quot;cannot write ECAT file&quot;</span>); <span class="keywordflow">return</span>(3);}
<a name="l00446"></a>00446 
<a name="l00447"></a>00447   <span class="comment">/* Set the subheader contents, as far as possible */</span>
<a name="l00448"></a>00448   <span class="keywordflow">switch</span>(main_header.<a class="code" href="structecat63__mainheader.html#aeb7fd4a6b107a810dcff5d82b6f58440">file_type</a>) {
<a name="l00449"></a>00449     <span class="keywordflow">case</span> <a class="code" href="ecat63_8h.html#a7140d943b6f40ad3c4bdab5a2073c2f6">RAW_DATA</a>:
<a name="l00450"></a>00450       scan_header.<a class="code" href="structecat63__scanheader.html#ad1ee12caf8404e9237c9b14d95711109">data_type</a>=main_header.<a class="code" href="structecat63__mainheader.html#a727d6abe8019b32f33965c76ca19a9ee">data_type</a>;
<a name="l00451"></a>00451       scan_header.<a class="code" href="structecat63__scanheader.html#adee5ad20def49d6f13da7efde9da4e3e">dimension_1</a>=img-&gt;<a class="code" href="structIMG.html#a0818b82059710627a94282a793ff7030">dimx</a>;
<a name="l00452"></a>00452       scan_header.<a class="code" href="structecat63__scanheader.html#a87c12560397fa7408d95ad30d1800f92">dimension_2</a>=img-&gt;<a class="code" href="structIMG.html#aa17e87812503d3c142f31c08abcbf79d">dimy</a>;
<a name="l00453"></a>00453       scan_header.<a class="code" href="structecat63__scanheader.html#aaf23846f5c3ee43188d49fac0f592498">frame_duration_sec</a>=1;
<a name="l00454"></a>00454       scan_header.<a class="code" href="structecat63__scanheader.html#acfabab41eaa593a0625a43057bd9b558">scale_factor</a>=1.0;
<a name="l00455"></a>00455       scan_header.<a class="code" href="structecat63__scanheader.html#aa7214f91108a9d7a5bec6f0edbe3493d">frame_start_time</a>=0;
<a name="l00456"></a>00456       scan_header.<a class="code" href="structecat63__scanheader.html#a253426410960e4047acfb591c24e179b">frame_duration</a>=1000;
<a name="l00457"></a>00457       scan_header.<a class="code" href="structecat63__scanheader.html#a3077aca1fa9f9b64c57f4b6eb19780fb">loss_correction_fctr</a>=1.0;
<a name="l00458"></a>00458       <span class="comment">/*if(IMG_TEST) ecat63PrintScanheader(&amp;scan_header);*/</span>
<a name="l00459"></a>00459       <span class="keywordflow">break</span>;
<a name="l00460"></a>00460     <span class="keywordflow">case</span> <a class="code" href="ecat63_8h.html#aaf5f1adfda44941c4bf4de3e71219e4a">IMAGE_DATA</a>:
<a name="l00461"></a>00461       image_header.<a class="code" href="structecat63__imageheader.html#a00da8baaaefa0ca83e0c12636b298196">data_type</a>=main_header.<a class="code" href="structecat63__mainheader.html#a727d6abe8019b32f33965c76ca19a9ee">data_type</a>;
<a name="l00462"></a>00462       image_header.<a class="code" href="structecat63__imageheader.html#a417f483d23efabd675ed72cdd4bbdb98">num_dimensions</a>=2;
<a name="l00463"></a>00463       image_header.<a class="code" href="structecat63__imageheader.html#a86aae28e4de4b65fa5de745aab0bf082">dimension_1</a>=img-&gt;<a class="code" href="structIMG.html#a0818b82059710627a94282a793ff7030">dimx</a>;
<a name="l00464"></a>00464       image_header.<a class="code" href="structecat63__imageheader.html#ad53dbc60f5f5a34b7327abbf0d609d5d">dimension_2</a>=img-&gt;<a class="code" href="structIMG.html#aa17e87812503d3c142f31c08abcbf79d">dimy</a>;
<a name="l00465"></a>00465       image_header.<a class="code" href="structecat63__imageheader.html#a9a0fd8c173273797330c7c67effdffd6">recon_scale</a>=img-&gt;<a class="code" href="structIMG.html#ab23da0c2295967727c6d33d0fbdc8c88">zoom</a>;
<a name="l00466"></a>00466       image_header.<a class="code" href="structecat63__imageheader.html#ac4ff92a4d0a9b55e3647bfb45af9d381">quant_scale</a>=1.0;
<a name="l00467"></a>00467       image_header.<a class="code" href="structecat63__imageheader.html#ac2b4f461866cfcbe8bf33939d461becc">slice_width</a>=img-&gt;<a class="code" href="structIMG.html#afc2a1d2417a8a3afe2c500173a05c472">sizez</a>/10.;
<a name="l00468"></a>00468       image_header.<a class="code" href="structecat63__imageheader.html#a749a7dfb6443194317be2260fc7b5b7b">pixel_size</a>=img-&gt;<a class="code" href="structIMG.html#a02cc239e917e7ebf85e34f21448ff080">sizex</a>/10.;
<a name="l00469"></a>00469       image_header.<a class="code" href="structecat63__imageheader.html#a14bdbc2c5ce62d9ed0c57514b02f8f0e">frame_start_time</a>=0;
<a name="l00470"></a>00470       image_header.<a class="code" href="structecat63__imageheader.html#ae4fba67f8fb4e7f72f4d74b215b39058">frame_duration</a>=1000;
<a name="l00471"></a>00471       image_header.<a class="code" href="structecat63__imageheader.html#a7c53b9df3c138cf5b9d5b2986d003377">plane_eff_corr_fctr</a>=1.0;
<a name="l00472"></a>00472       image_header.<a class="code" href="structecat63__imageheader.html#a46ec10bffd9ad4bd54271b68022bd41c">decay_corr_fctr</a>=1.0;
<a name="l00473"></a>00473       image_header.<a class="code" href="structecat63__imageheader.html#ab7fe2e08a8afa0b40c4fb9cf5a434ac1">loss_corr_fctr</a>=1.0;
<a name="l00474"></a>00474       image_header.<a class="code" href="structecat63__imageheader.html#aa50b6a76225241de1056e26de450fb1c">ecat_calibration_fctr</a>=1.0;
<a name="l00475"></a>00475       image_header.<a class="code" href="structecat63__imageheader.html#a6338eb4b7fdcb624ac0673260d16db42">well_counter_cal_fctr</a>=1.0;
<a name="l00476"></a>00476       image_header.<a class="code" href="structecat63__imageheader.html#a38136ac931d35627e8644ccc71d97aec">quant_units</a>=main_header.<a class="code" href="structecat63__mainheader.html#ad8b7b38c78851f5724f8e2095d850271">calibration_units</a>;
<a name="l00477"></a>00477       <span class="comment">/*if(IMG_TEST) ecat63PrintImageheader(&amp;image_header);*/</span>
<a name="l00478"></a>00478       <span class="keywordflow">break</span>;
<a name="l00479"></a>00479   }
<a name="l00480"></a>00480 
<a name="l00481"></a>00481   <span class="comment">/* Write one matrix at a time */</span>
<a name="l00482"></a>00482   n=0;
<a name="l00483"></a>00483   <span class="keywordflow">for</span>(plane=1; plane&lt;=img-&gt;<a class="code" href="structIMG.html#a9c04780b47e6a627a2b700b76352c3fc">dimz</a>; plane++) <span class="keywordflow">for</span>(frame=1; frame&lt;=img-&gt;<a class="code" href="structIMG.html#a77605d4aa64b86294590c79e9a761b15">dimt</a>; frame++) {
<a name="l00484"></a>00484     <span class="comment">/* Scale data to short ints */</span>
<a name="l00485"></a>00485     <span class="comment">/* Search min and max */</span>
<a name="l00486"></a>00486     fmin=fmax=f=img-&gt;<a class="code" href="structIMG.html#a43e2c98dc0728731601a76abd51bb935">m</a>[plane-1][0][0][frame-1];
<a name="l00487"></a>00487     <span class="keywordflow">for</span>(i=0; i&lt;img-&gt;<a class="code" href="structIMG.html#aa17e87812503d3c142f31c08abcbf79d">dimy</a>; i++) <span class="keywordflow">for</span>(j=0; j&lt;img-&gt;<a class="code" href="structIMG.html#a0818b82059710627a94282a793ff7030">dimx</a>; j++) {
<a name="l00488"></a>00488       f=img-&gt;<a class="code" href="structIMG.html#a43e2c98dc0728731601a76abd51bb935">m</a>[plane-1][i][j][frame-1];
<a name="l00489"></a>00489       <span class="keywordflow">if</span>(f&gt;fmax) fmax=f; <span class="keywordflow">else</span> <span class="keywordflow">if</span>(f&lt;fmin) fmin=f;
<a name="l00490"></a>00490     }
<a name="l00491"></a>00491     <span class="comment">/* Calculate scaling factor */</span>
<a name="l00492"></a>00492     <span class="keywordflow">if</span>(fabs(fmin)&gt;fabs(fmax)) g=fabs(fmin); <span class="keywordflow">else</span> g=fabs(fmax);
<a name="l00493"></a>00493     <span class="keywordflow">if</span>(g!=0) scale=32766./g; <span class="keywordflow">else</span> scale=1.0;
<a name="l00494"></a>00494     <span class="comment">/*printf(&quot;fmin=%e fmax=%e g=%e scale=%e\n&quot;, fmin, fmax, g, scale);*/</span>
<a name="l00495"></a>00495     <span class="comment">/* Scale matrix data to shorts */</span>
<a name="l00496"></a>00496     sptr=sdata;
<a name="l00497"></a>00497     <span class="keywordflow">for</span>(i=0; i&lt;img-&gt;<a class="code" href="structIMG.html#aa17e87812503d3c142f31c08abcbf79d">dimy</a>; i++) <span class="keywordflow">for</span>(j=0; j&lt;img-&gt;<a class="code" href="structIMG.html#a0818b82059710627a94282a793ff7030">dimx</a>; j++) {
<a name="l00498"></a>00498       *sptr=(<span class="keywordtype">short</span> int)temp_roundf(scale*img-&gt;<a class="code" href="structIMG.html#a43e2c98dc0728731601a76abd51bb935">m</a>[plane-1][i][j][frame-1]);
<a name="l00499"></a>00499       sptr++;
<a name="l00500"></a>00500     }
<a name="l00501"></a>00501     <span class="comment">/* Calculate and set subheader min&amp;max and scale */</span>
<a name="l00502"></a>00502     smin=(<span class="keywordtype">short</span> int)temp_roundf(scale*fmin); smax=(<span class="keywordtype">short</span> int)temp_roundf(scale*fmax);
<a name="l00503"></a>00503     <span class="keywordflow">if</span>(main_header.<a class="code" href="structecat63__mainheader.html#aeb7fd4a6b107a810dcff5d82b6f58440">file_type</a>==<a class="code" href="ecat63_8h.html#a7140d943b6f40ad3c4bdab5a2073c2f6">RAW_DATA</a>) {
<a name="l00504"></a>00504       scan_header.<a class="code" href="structecat63__scanheader.html#abeeb6fea3c31b83464be7afcdff37219">scan_min</a>=smin; scan_header.<a class="code" href="structecat63__scanheader.html#a87fc09622afe7e2372588f650e7e6afd">scan_max</a>=smax;
<a name="l00505"></a>00505       scan_header.<a class="code" href="structecat63__scanheader.html#acfabab41eaa593a0625a43057bd9b558">scale_factor</a>=1.0/scale;
<a name="l00506"></a>00506       scan_header.<a class="code" href="structecat63__scanheader.html#aa7214f91108a9d7a5bec6f0edbe3493d">frame_start_time</a>=(int)temp_roundf(1000.*img-&gt;<a class="code" href="structIMG.html#a8ff22fc209b6f44ad14341c8644788d2">start</a>[frame-1]);
<a name="l00507"></a>00507       scan_header.<a class="code" href="structecat63__scanheader.html#a253426410960e4047acfb591c24e179b">frame_duration</a>=
<a name="l00508"></a>00508         (int)temp_roundf(1000.*(img-&gt;<a class="code" href="structIMG.html#aa2b629a51ca62bcafad0a66d32e1ca8b">end</a>[frame-1]-img-&gt;<a class="code" href="structIMG.html#a8ff22fc209b6f44ad14341c8644788d2">start</a>[frame-1]));
<a name="l00509"></a>00509       scan_header.<a class="code" href="structecat63__scanheader.html#acb676ed22b052fbaa07bd044263ac279">sample_distance</a>=(img-&gt;<a class="code" href="structIMG.html#a399dae5b27dda8d5e1b0e96c885513e4">sampleDistance</a>)/10.0;
<a name="l00510"></a>00510       scan_header.<a class="code" href="structecat63__scanheader.html#a28b007d345ada719bb886fd7a2683d76">prompts</a>=temp_roundf(img-&gt;<a class="code" href="structIMG.html#a76d63a001b8569d9f80ccb325e064be1">prompts</a>[frame-1]);
<a name="l00511"></a>00511       scan_header.<a class="code" href="structecat63__scanheader.html#ad0a2468779aec56e8d45ca685834eb16">delayed</a>=temp_roundf(img-&gt;<a class="code" href="structIMG.html#ae47ebbbdc0c308f473fec801a2df513d">randoms</a>[frame-1]);
<a name="l00512"></a>00512     } <span class="keywordflow">else</span> <span class="keywordflow">if</span>(main_header.<a class="code" href="structecat63__mainheader.html#aeb7fd4a6b107a810dcff5d82b6f58440">file_type</a>==<a class="code" href="ecat63_8h.html#aaf5f1adfda44941c4bf4de3e71219e4a">IMAGE_DATA</a>) {
<a name="l00513"></a>00513       image_header.<a class="code" href="structecat63__imageheader.html#ad9ae22f6f465f3872ad5dbc66f0a171b">image_min</a>=smin; image_header.<a class="code" href="structecat63__imageheader.html#a7020d45c4b35dd0c72ce4b87028ed9b9">image_max</a>=smax;
<a name="l00514"></a>00514       image_header.<a class="code" href="structecat63__imageheader.html#ac4ff92a4d0a9b55e3647bfb45af9d381">quant_scale</a>=1.0/scale;
<a name="l00515"></a>00515       image_header.<a class="code" href="structecat63__imageheader.html#a14bdbc2c5ce62d9ed0c57514b02f8f0e">frame_start_time</a>=(int)temp_roundf(1000.*img-&gt;<a class="code" href="structIMG.html#a8ff22fc209b6f44ad14341c8644788d2">start</a>[frame-1]);
<a name="l00516"></a>00516       image_header.<a class="code" href="structecat63__imageheader.html#ae4fba67f8fb4e7f72f4d74b215b39058">frame_duration</a>=
<a name="l00517"></a>00517         (int)temp_roundf(1000.*(img-&gt;<a class="code" href="structIMG.html#aa2b629a51ca62bcafad0a66d32e1ca8b">end</a>[frame-1]-img-&gt;<a class="code" href="structIMG.html#a8ff22fc209b6f44ad14341c8644788d2">start</a>[frame-1]));
<a name="l00518"></a>00518       <span class="comment">/* Set decay correction factor */</span>
<a name="l00519"></a>00519       <span class="keywordflow">if</span>(img-&gt;<a class="code" href="structIMG.html#a6ce801dea67ec8224e8cfc9aebb8a909">decayCorrected</a>)
<a name="l00520"></a>00520         image_header.<a class="code" href="structecat63__imageheader.html#a46ec10bffd9ad4bd54271b68022bd41c">decay_corr_fctr</a>=img-&gt;<a class="code" href="structIMG.html#abf0ad6e681d08c3248dbd9837afa9973">decayCorrFactor</a>[frame-1];
<a name="l00521"></a>00521     } 
<a name="l00522"></a>00522     <span class="comment">/* Write matrix data */</span>
<a name="l00523"></a>00523     m=<a class="code" href="ecat63ml_8c.html#a7561756da60d9e38a1419da8ebf220fb">mat_numcod</a>(frame, img-&gt;<a class="code" href="structIMG.html#a78e3164d578cf4a570e930dceb10fb51">planeNumber</a>[plane-1], 1, 0, 0);
<a name="l00524"></a>00524     <span class="comment">/*m=mat_numcod(frame, plane, 1, 0, 0);*/</span>
<a name="l00525"></a>00525     sptr=sdata;
<a name="l00526"></a>00526     <span class="keywordflow">if</span>(<a class="code" href="img_8h.html#a0d66ed136e5992b7b00ce6f43bad1439">IMG_TEST</a>) printf(<span class="stringliteral">&quot;  writing matnum=%d\n&quot;</span>, m);
<a name="l00527"></a>00527     <span class="keywordflow">if</span>(main_header.<a class="code" href="structecat63__mainheader.html#aeb7fd4a6b107a810dcff5d82b6f58440">file_type</a>==<a class="code" href="ecat63_8h.html#a7140d943b6f40ad3c4bdab5a2073c2f6">RAW_DATA</a>) {
<a name="l00528"></a>00528       <span class="keywordflow">if</span>(<a class="code" href="img_8h.html#a0d66ed136e5992b7b00ce6f43bad1439">IMG_TEST</a>) <a class="code" href="ecat63p_8c.html#a67a369196200471d7954b4788de262a6">ecat63PrintScanheader</a>(&amp;scan_header, stdout);
<a name="l00529"></a>00529       ret=<a class="code" href="ecat63w_8c.html#a0ef3ec20d54221eb1730dd531724b378">ecat63WriteScan</a>(fp, m, &amp;scan_header, sptr);
<a name="l00530"></a>00530     } <span class="keywordflow">else</span> <span class="keywordflow">if</span>(main_header.<a class="code" href="structecat63__mainheader.html#aeb7fd4a6b107a810dcff5d82b6f58440">file_type</a>==<a class="code" href="ecat63_8h.html#aaf5f1adfda44941c4bf4de3e71219e4a">IMAGE_DATA</a>) {
<a name="l00531"></a>00531       <span class="keywordflow">if</span>(<a class="code" href="img_8h.html#a0d66ed136e5992b7b00ce6f43bad1439">IMG_TEST</a>) <a class="code" href="ecat63p_8c.html#a5f3ba1102f964d98b4de5a93c3d9fd36">ecat63PrintImageheader</a>(&amp;image_header, stdout);
<a name="l00532"></a>00532       ret=<a class="code" href="ecat63w_8c.html#ab7e9bf33b3225d1260ad04c44ce817ab">ecat63WriteImage</a>(fp, m, &amp;image_header, sptr);
<a name="l00533"></a>00533     }
<a name="l00534"></a>00534     <span class="keywordflow">if</span>(ret) {
<a name="l00535"></a>00535       sprintf(<a class="code" href="ecat63_8h.html#a1a4fc8f123b2ef83d928b63743aa49d9">ecat63errmsg</a>, <span class="stringliteral">&quot;cannot write data on pl%02d fr%02d (%d).&quot;</span>,
<a name="l00536"></a>00536         plane, frame, ret);
<a name="l00537"></a>00537       fclose(fp); <span class="keyword">remove</span>(fname); free(sdata);
<a name="l00538"></a>00538       <span class="keywordflow">return</span>(9);
<a name="l00539"></a>00539     }
<a name="l00540"></a>00540     n++;
<a name="l00541"></a>00541   } <span class="comment">/* next matrix */</span>
<a name="l00542"></a>00542   <span class="keywordflow">if</span>(<a class="code" href="img_8h.html#a0d66ed136e5992b7b00ce6f43bad1439">IMG_TEST</a>) printf(<span class="stringliteral">&quot;  %d matrices written in %s\n&quot;</span>, n, fname);
<a name="l00543"></a>00543 
<a name="l00544"></a>00544   <span class="comment">/* Close file and free memory */</span>
<a name="l00545"></a>00545   fclose(fp); free(sdata);
<a name="l00546"></a>00546 
<a name="l00547"></a>00547   <span class="keywordflow">return</span>(0);
<a name="l00548"></a>00548 }
<a name="l00549"></a>00549 <span class="comment">/*****************************************************************************/</span>
<a name="l00550"></a>00550 
<a name="l00551"></a>00551 <span class="comment">/*****************************************************************************/</span>
<a name="l00568"></a><a class="code" href="imgfile_8h.html#a010e9f3c0dc798651056c58df08af544">00568</a> <span class="keywordtype">int</span> <a class="code" href="img__e63_8c.html#a010e9f3c0dc798651056c58df08af544">ecat63ReadPlaneToImg</a>(<span class="keyword">const</span> <span class="keywordtype">char</span> *fname, <a class="code" href="structIMG.html">IMG</a> *img) {
<a name="l00569"></a>00569   <span class="keywordtype">int</span>                 i, j, m, ret, blkNr=0, dim_x=0, dim_y=0, pxlNr=0, del_nr=0;
<a name="l00570"></a>00570   <span class="keywordtype">int</span>                 frameNr, planeNr, datatype=0, firstm=0, isFirst=0;
<a name="l00571"></a>00571   <span class="keywordtype">int</span>                 frame, plane, prev_frame, prev_plane, prev_frameNr=0;
<a name="l00572"></a>00572   FILE               *fp;
<a name="l00573"></a>00573   <a class="code" href="structecat63__mainheader.html">ECAT63_mainheader</a>   main_header;
<a name="l00574"></a>00574   <a class="code" href="structMATRIXLIST.html">MATRIXLIST</a>          mlist;
<a name="l00575"></a>00575   <a class="code" href="structMatDir.html">MatDir</a>              tmpMatdir;
<a name="l00576"></a>00576   <a class="code" href="structMatval.html">Matval</a>              matval;
<a name="l00577"></a>00577   <a class="code" href="structecat63__imageheader.html">ECAT63_imageheader</a>  image_header;
<a name="l00578"></a>00578   <a class="code" href="structecat63__scanheader.html">ECAT63_scanheader</a>   scan_header;
<a name="l00579"></a>00579   <a class="code" href="structecat63__attnheader.html">ECAT63_attnheader</a>   attn_header;
<a name="l00580"></a>00580   <a class="code" href="structecat63__normheader.html">ECAT63_normheader</a>   norm_header;
<a name="l00581"></a>00581   <span class="keywordtype">float</span>               scale=1.0;
<a name="l00582"></a>00582   <span class="keywordtype">short</span> <span class="keywordtype">int</span>          *sptr;
<a name="l00583"></a>00583   <span class="keywordtype">char</span>               *mdata=NULL, *mptr;
<a name="l00584"></a>00584   <span class="keywordtype">int</span>                *iptr;
<a name="l00585"></a>00585   <span class="keyword">struct </span>tm           scanStart;
<a name="l00586"></a>00586 
<a name="l00587"></a>00587 
<a name="l00588"></a>00588   <span class="keywordflow">if</span>(<a class="code" href="img_8h.html#a0d66ed136e5992b7b00ce6f43bad1439">IMG_TEST</a>) printf(<span class="stringliteral">&quot;ecat63ReadPlaneToImg(%s, *img)\n&quot;</span>, fname);
<a name="l00589"></a>00589   <span class="comment">/* Check the arguments */</span>
<a name="l00590"></a>00590   <span class="keywordflow">if</span>(fname==NULL) {strcpy(<a class="code" href="ecat63_8h.html#a1a4fc8f123b2ef83d928b63743aa49d9">ecat63errmsg</a>, <span class="stringliteral">&quot;invalid ECAT filename&quot;</span>); <span class="keywordflow">return</span>(2);}
<a name="l00591"></a>00591   <span class="keywordflow">if</span>(img==NULL || img-&gt;<a class="code" href="structIMG.html#a5b8bdc61088df4a3c3f89c31895b14a4">status</a>==<a class="code" href="img_8h.html#aaa022c5022b37f3676f2e888f024f848">IMG_STATUS_UNINITIALIZED</a>) {
<a name="l00592"></a>00592     strcpy(<a class="code" href="ecat63_8h.html#a1a4fc8f123b2ef83d928b63743aa49d9">ecat63errmsg</a>, <span class="stringliteral">&quot;image data not initialized&quot;</span>); <span class="keywordflow">return</span>(2);}
<a name="l00593"></a>00593 
<a name="l00594"></a>00594   <span class="comment">/* Open input CTI file for read */</span>
<a name="l00595"></a>00595   <span class="keywordflow">if</span>((fp=fopen(fname, <span class="stringliteral">&quot;rb&quot;</span>)) == NULL) {
<a name="l00596"></a>00596     strcpy(<a class="code" href="ecat63_8h.html#a1a4fc8f123b2ef83d928b63743aa49d9">ecat63errmsg</a>, <span class="stringliteral">&quot;cannot open ECAT file&quot;</span>); <span class="keywordflow">return</span>(3);}
<a name="l00597"></a>00597 
<a name="l00598"></a>00598   <span class="comment">/* Read main header */</span>
<a name="l00599"></a>00599   <span class="keywordflow">if</span>((ret=<a class="code" href="ecat63r_8c.html#af904c6b26259c4f280cdc18f92aeeae5">ecat63ReadMainheader</a>(fp, &amp;main_header))) {
<a name="l00600"></a>00600     sprintf(<a class="code" href="ecat63_8h.html#a1a4fc8f123b2ef83d928b63743aa49d9">ecat63errmsg</a>, <span class="stringliteral">&quot;cannot read main header (%d)&quot;</span>, ret);
<a name="l00601"></a>00601     fclose(fp); <span class="keywordflow">return</span>(4);
<a name="l00602"></a>00602   }
<a name="l00603"></a>00603   <span class="keywordflow">if</span>(<a class="code" href="img_8h.html#a0d66ed136e5992b7b00ce6f43bad1439">IMG_TEST</a>) <a class="code" href="ecat63p_8c.html#a129d5f8c3d6135b9934cebc54d27bc47">ecat63PrintMainheader</a>(&amp;main_header, stdout);
<a name="l00604"></a>00604 
<a name="l00605"></a>00605   <span class="comment">/* Read matrix list and nr */</span>
<a name="l00606"></a>00606   <a class="code" href="ecat63ml_8c.html#a2477fe69c32ce33b443b9c0eaedae423">ecat63InitMatlist</a>(&amp;mlist);
<a name="l00607"></a>00607   ret=<a class="code" href="ecat63ml_8c.html#a6cce9d0e541e82d56c9d162f16202179">ecat63ReadMatlist</a>(fp, &amp;mlist);
<a name="l00608"></a>00608   <span class="keywordflow">if</span>(ret) {
<a name="l00609"></a>00609     sprintf(<a class="code" href="ecat63_8h.html#a1a4fc8f123b2ef83d928b63743aa49d9">ecat63errmsg</a>, <span class="stringliteral">&quot;cannot read matrix list (%d)&quot;</span>, ret);
<a name="l00610"></a>00610     fclose(fp); <span class="keywordflow">return</span>(5);
<a name="l00611"></a>00611   }
<a name="l00612"></a>00612   <span class="keywordflow">if</span>(mlist.<a class="code" href="structMATRIXLIST.html#a7fcfb983a42851d8562084ddde1f9fcd">matrixNr</a>&lt;=0) {
<a name="l00613"></a>00613     strcpy(<a class="code" href="ecat63_8h.html#a1a4fc8f123b2ef83d928b63743aa49d9">ecat63errmsg</a>, <span class="stringliteral">&quot;matrix list is empty&quot;</span>); fclose(fp); <span class="keywordflow">return</span>(5);}
<a name="l00614"></a>00614   <span class="comment">/* Sort matrix list */</span>
<a name="l00615"></a>00615   <span class="keywordflow">for</span>(i=0; i&lt;mlist.<a class="code" href="structMATRIXLIST.html#a7fcfb983a42851d8562084ddde1f9fcd">matrixNr</a>-1; i++) <span class="keywordflow">for</span>(j=i+1; j&lt;mlist.<a class="code" href="structMATRIXLIST.html#a7fcfb983a42851d8562084ddde1f9fcd">matrixNr</a>; j++) {
<a name="l00616"></a>00616     <span class="keywordflow">if</span>(mlist.<a class="code" href="structMATRIXLIST.html#a42676745379d69392b07b5c29626f6f9">matdir</a>[i].<a class="code" href="structMatDir.html#aeb0291ec1f5ac237c1e587ed3d23b1bb">matnum</a>&gt;mlist.<a class="code" href="structMATRIXLIST.html#a42676745379d69392b07b5c29626f6f9">matdir</a>[j].<a class="code" href="structMatDir.html#aeb0291ec1f5ac237c1e587ed3d23b1bb">matnum</a>) {
<a name="l00617"></a>00617       tmpMatdir=mlist.<a class="code" href="structMATRIXLIST.html#a42676745379d69392b07b5c29626f6f9">matdir</a>[i];
<a name="l00618"></a>00618       mlist.<a class="code" href="structMATRIXLIST.html#a42676745379d69392b07b5c29626f6f9">matdir</a>[i]=mlist.<a class="code" href="structMATRIXLIST.html#a42676745379d69392b07b5c29626f6f9">matdir</a>[j]; mlist.<a class="code" href="structMATRIXLIST.html#a42676745379d69392b07b5c29626f6f9">matdir</a>[j]=tmpMatdir;
<a name="l00619"></a>00619     }
<a name="l00620"></a>00620   }
<a name="l00621"></a>00621   <span class="comment">/* Trim extra frames */</span>
<a name="l00622"></a>00622   <span class="keywordflow">if</span>(main_header.<a class="code" href="structecat63__mainheader.html#a01ad1f4be366fb3ad82da61022e9761c">num_frames</a>&gt;0) {
<a name="l00623"></a>00623     del_nr=<a class="code" href="ecat63ml_8c.html#a9dc9509d99d809410fc5904410562856">ecat63DeleteLateFrames</a>(&amp;mlist, main_header.<a class="code" href="structecat63__mainheader.html#a01ad1f4be366fb3ad82da61022e9761c">num_frames</a>);
<a name="l00624"></a>00624     <span class="keywordflow">if</span>(<a class="code" href="img_8h.html#a0d66ed136e5992b7b00ce6f43bad1439">IMG_TEST</a> &amp;&amp; del_nr&gt;0)
<a name="l00625"></a>00625       printf(<span class="stringliteral">&quot;  %d entries in matrix list will not be used.\n&quot;</span>, del_nr);
<a name="l00626"></a>00626   }
<a name="l00627"></a>00627 
<a name="l00628"></a>00628   <span class="comment">/* Decide the plane to read */</span>
<a name="l00629"></a>00629   <span class="keywordflow">if</span>(img-&gt;<a class="code" href="structIMG.html#a5b8bdc61088df4a3c3f89c31895b14a4">status</a>==<a class="code" href="img_8h.html#a3117b1b0649d3761dcda1395202129e5">IMG_STATUS_OCCUPIED</a>) {
<a name="l00630"></a>00630     <span class="comment">/* img contains data */</span>
<a name="l00631"></a>00631     isFirst=0; prev_frameNr=img-&gt;<a class="code" href="structIMG.html#a77605d4aa64b86294590c79e9a761b15">dimt</a>;
<a name="l00632"></a>00632     <span class="comment">/* get the current plane in there */</span>
<a name="l00633"></a>00633     prev_plane=img-&gt;<a class="code" href="structIMG.html#a78e3164d578cf4a570e930dceb10fb51">planeNumber</a>[img-&gt;<a class="code" href="structIMG.html#a9c04780b47e6a627a2b700b76352c3fc">dimz</a>-1];
<a name="l00634"></a>00634     <span class="comment">/* Clear all data in img: not here but only after finding new data */</span>
<a name="l00635"></a>00635   } <span class="keywordflow">else</span> {
<a name="l00636"></a>00636     <span class="comment">/* img does not contain any data */</span>
<a name="l00637"></a>00637     isFirst=1;
<a name="l00638"></a>00638     <span class="comment">/* set &quot;current plane&quot; to -1 */</span>
<a name="l00639"></a>00639     prev_plane=-1;
<a name="l00640"></a>00640   }
<a name="l00641"></a>00641   <span class="comment">/* from sorted matrix list, find the first plane larger than the current one */</span>
<a name="l00642"></a>00642   <span class="keywordflow">for</span>(m=0, plane=-1; m&lt;mlist.<a class="code" href="structMATRIXLIST.html#a7fcfb983a42851d8562084ddde1f9fcd">matrixNr</a>; m++) <span class="keywordflow">if</span>(mlist.<a class="code" href="structMATRIXLIST.html#a42676745379d69392b07b5c29626f6f9">matdir</a>[m].<a class="code" href="structMatDir.html#a9096ac571f3dabee56894b264552f65f">matstat</a>==1) {
<a name="l00643"></a>00643     <a class="code" href="ecat63ml_8c.html#af566384e63f743897f71d8ee41b3b292">mat_numdoc</a>(mlist.<a class="code" href="structMATRIXLIST.html#a42676745379d69392b07b5c29626f6f9">matdir</a>[m].<a class="code" href="structMatDir.html#aeb0291ec1f5ac237c1e587ed3d23b1bb">matnum</a>, &amp;matval);
<a name="l00644"></a>00644     <span class="keywordflow">if</span>(matval.<a class="code" href="structMatval.html#ac87d088d281d918936f987cd19148069">plane</a>&gt;prev_plane) {plane=matval.<a class="code" href="structMatval.html#ac87d088d281d918936f987cd19148069">plane</a>; <span class="keywordflow">break</span>;}
<a name="l00645"></a>00645   }
<a name="l00646"></a>00646   <span class="comment">/* If not found, return an error or 1 if this was not the first one */</span>
<a name="l00647"></a>00647   <span class="keywordflow">if</span>(plane&lt;0) {
<a name="l00648"></a>00648     fclose(fp); <a class="code" href="ecat63ml_8c.html#a2d931d7e3d4e21159731b7c480c209b9">ecat63EmptyMatlist</a>(&amp;mlist);
<a name="l00649"></a>00649     <span class="keywordflow">if</span>(isFirst) {
<a name="l00650"></a>00650       sprintf(<a class="code" href="ecat63_8h.html#a1a4fc8f123b2ef83d928b63743aa49d9">ecat63errmsg</a>, <span class="stringliteral">&quot;ECAT file contains no matrices&quot;</span>);
<a name="l00651"></a>00651       <span class="keywordflow">return</span>(7);
<a name="l00652"></a>00652     } <span class="keywordflow">else</span> {
<a name="l00653"></a>00653       sprintf(<a class="code" href="ecat63_8h.html#a1a4fc8f123b2ef83d928b63743aa49d9">ecat63errmsg</a>, <span class="stringliteral">&quot;ECAT file contains no more planes&quot;</span>);
<a name="l00654"></a>00654       <span class="keywordflow">if</span>(<a class="code" href="img_8h.html#a0d66ed136e5992b7b00ce6f43bad1439">IMG_TEST</a>) printf(<span class="stringliteral">&quot;%s\n&quot;</span>, <a class="code" href="ecat63_8h.html#a1a4fc8f123b2ef83d928b63743aa49d9">ecat63errmsg</a>);
<a name="l00655"></a>00655       <span class="keywordflow">return</span>(1);
<a name="l00656"></a>00656     }
<a name="l00657"></a>00657   }
<a name="l00658"></a>00658   <span class="keywordflow">if</span>(<a class="code" href="img_8h.html#a0d66ed136e5992b7b00ce6f43bad1439">IMG_TEST</a>) printf(<span class="stringliteral">&quot;Next plane to read: %d\n&quot;</span>, plane);
<a name="l00659"></a>00659   <span class="comment">/* Clear all data in img */</span>
<a name="l00660"></a>00660   <a class="code" href="img_8c.html#ada573d4b40da77be4455bb9fab9a3033">imgEmpty</a>(img);
<a name="l00661"></a>00661 
<a name="l00662"></a>00662   <span class="comment">/* Calculate the number of frames and gates */</span>
<a name="l00663"></a>00663   prev_frame=frame=-1; frameNr=0; ret=0; planeNr=1;
<a name="l00664"></a>00664   <span class="keywordflow">for</span>(m=0; m&lt;mlist.<a class="code" href="structMATRIXLIST.html#a7fcfb983a42851d8562084ddde1f9fcd">matrixNr</a>; m++) <span class="keywordflow">if</span>(mlist.<a class="code" href="structMATRIXLIST.html#a42676745379d69392b07b5c29626f6f9">matdir</a>[m].<a class="code" href="structMatDir.html#a9096ac571f3dabee56894b264552f65f">matstat</a>==1) {
<a name="l00665"></a>00665     <span class="comment">/* get frame and plane; work only with current plane */</span>
<a name="l00666"></a>00666     <a class="code" href="ecat63ml_8c.html#af566384e63f743897f71d8ee41b3b292">mat_numdoc</a>(mlist.<a class="code" href="structMATRIXLIST.html#a42676745379d69392b07b5c29626f6f9">matdir</a>[m].<a class="code" href="structMatDir.html#aeb0291ec1f5ac237c1e587ed3d23b1bb">matnum</a>, &amp;matval);
<a name="l00667"></a>00667     <span class="keywordflow">if</span>(matval.<a class="code" href="structMatval.html#ac87d088d281d918936f987cd19148069">plane</a>&lt;plane) <span class="keywordflow">continue</span>; <span class="keywordflow">else</span> <span class="keywordflow">if</span>(matval.<a class="code" href="structMatval.html#ac87d088d281d918936f987cd19148069">plane</a>&gt;plane) <span class="keywordflow">break</span>;
<a name="l00668"></a>00668     <span class="keywordflow">if</span>(main_header.<a class="code" href="structecat63__mainheader.html#a01ad1f4be366fb3ad82da61022e9761c">num_frames</a>&gt;=main_header.<a class="code" href="structecat63__mainheader.html#a5038021b6504d93e304931a95af64746">num_gates</a>) frame=matval.<a class="code" href="structMatval.html#a514081d81e26c20a377de4e945499446">frame</a>;
<a name="l00669"></a>00669     <span class="keywordflow">else</span> frame=matval.<a class="code" href="structMatval.html#ab317865439d3423f362a3094dd65fc18">gate</a>;
<a name="l00670"></a>00670     frameNr++;
<a name="l00671"></a>00671     <span class="comment">/* frame (gate) numbers must be continuous */</span>
<a name="l00672"></a>00672     <span class="keywordflow">if</span>(prev_frame&gt;0 &amp;&amp; frame!=prev_frame+1) {ret=1; <span class="keywordflow">break</span>;}
<a name="l00673"></a>00673     prev_frame=frame;
<a name="l00674"></a>00674     <span class="comment">/* Calculate and check the size of one data matrix */</span>
<a name="l00675"></a>00675     <span class="keywordflow">if</span>(frameNr==1) {
<a name="l00676"></a>00676       firstm=m;
<a name="l00677"></a>00677       blkNr=mlist.<a class="code" href="structMATRIXLIST.html#a42676745379d69392b07b5c29626f6f9">matdir</a>[m].<a class="code" href="structMatDir.html#ad1781958d48d68431d0c3b630093994f">endblk</a>-mlist.<a class="code" href="structMATRIXLIST.html#a42676745379d69392b07b5c29626f6f9">matdir</a>[m].<a class="code" href="structMatDir.html#af91ca45aca86269901b03480b5b6d741">strtblk</a>;
<a name="l00678"></a>00678     } <span class="keywordflow">else</span> <span class="keywordflow">if</span>(blkNr!=mlist.<a class="code" href="structMATRIXLIST.html#a42676745379d69392b07b5c29626f6f9">matdir</a>[m].<a class="code" href="structMatDir.html#ad1781958d48d68431d0c3b630093994f">endblk</a>-mlist.<a class="code" href="structMATRIXLIST.html#a42676745379d69392b07b5c29626f6f9">matdir</a>[m].<a class="code" href="structMatDir.html#af91ca45aca86269901b03480b5b6d741">strtblk</a>) {
<a name="l00679"></a>00679       ret=2; <span class="keywordflow">break</span>;
<a name="l00680"></a>00680     }
<a name="l00681"></a>00681     prev_frame=frame;
<a name="l00682"></a>00682   } <span class="comment">/* next matrix */</span>
<a name="l00683"></a>00683   <span class="keywordflow">if</span>(ret==1) {
<a name="l00684"></a>00684     strcpy(<a class="code" href="ecat63_8h.html#a1a4fc8f123b2ef83d928b63743aa49d9">ecat63errmsg</a>, <span class="stringliteral">&quot;missing matrix&quot;</span>);
<a name="l00685"></a>00685     <a class="code" href="ecat63ml_8c.html#a2d931d7e3d4e21159731b7c480c209b9">ecat63EmptyMatlist</a>(&amp;mlist); fclose(fp); <span class="keywordflow">return</span>(6);
<a name="l00686"></a>00686   }
<a name="l00687"></a>00687   <span class="keywordflow">if</span>(ret==2) {
<a name="l00688"></a>00688     strcpy(<a class="code" href="ecat63_8h.html#a1a4fc8f123b2ef83d928b63743aa49d9">ecat63errmsg</a>, <span class="stringliteral">&quot;matrix sizes are different&quot;</span>);
<a name="l00689"></a>00689     <a class="code" href="ecat63ml_8c.html#a2d931d7e3d4e21159731b7c480c209b9">ecat63EmptyMatlist</a>(&amp;mlist); fclose(fp); <span class="keywordflow">return</span>(6);
<a name="l00690"></a>00690   }
<a name="l00691"></a>00691   <span class="comment">/* Check that frameNr is equal to the dimt in IMG */</span>
<a name="l00692"></a>00692   <span class="keywordflow">if</span>(!isFirst &amp;&amp; frameNr!=prev_frameNr) {
<a name="l00693"></a>00693     strcpy(<a class="code" href="ecat63_8h.html#a1a4fc8f123b2ef83d928b63743aa49d9">ecat63errmsg</a>, <span class="stringliteral">&quot;different frame nr in different planes&quot;</span>);
<a name="l00694"></a>00694     <a class="code" href="ecat63ml_8c.html#a2d931d7e3d4e21159731b7c480c209b9">ecat63EmptyMatlist</a>(&amp;mlist); fclose(fp); <span class="keywordflow">return</span>(6);
<a name="l00695"></a>00695   }
<a name="l00696"></a>00696 
<a name="l00697"></a>00697   <span class="comment">/* Read x,y-dimensions from 1st matrix subheader on current plane */</span>
<a name="l00698"></a>00698   m=firstm; <span class="keywordflow">if</span>(main_header.<a class="code" href="structecat63__mainheader.html#aeb7fd4a6b107a810dcff5d82b6f58440">file_type</a>==<a class="code" href="ecat63_8h.html#aaf5f1adfda44941c4bf4de3e71219e4a">IMAGE_DATA</a>) {
<a name="l00699"></a>00699     ret=<a class="code" href="ecat63r_8c.html#adc36293804c18dd15771c61500841b7c">ecat63ReadImageheader</a>(fp, mlist.<a class="code" href="structMATRIXLIST.html#a42676745379d69392b07b5c29626f6f9">matdir</a>[m].<a class="code" href="structMatDir.html#af91ca45aca86269901b03480b5b6d741">strtblk</a>, &amp;image_header);
<a name="l00700"></a>00700     dim_x=image_header.<a class="code" href="structecat63__imageheader.html#a86aae28e4de4b65fa5de745aab0bf082">dimension_1</a>; dim_y=image_header.<a class="code" href="structecat63__imageheader.html#ad53dbc60f5f5a34b7327abbf0d609d5d">dimension_2</a>;
<a name="l00701"></a>00701   } <span class="keywordflow">else</span> <span class="keywordflow">if</span>(main_header.<a class="code" href="structecat63__mainheader.html#aeb7fd4a6b107a810dcff5d82b6f58440">file_type</a>==<a class="code" href="ecat63_8h.html#a7140d943b6f40ad3c4bdab5a2073c2f6">RAW_DATA</a>) {
<a name="l00702"></a>00702     ret=<a class="code" href="ecat63r_8c.html#a811c9c52c52f1c749ee6cb0f7a51f884">ecat63ReadScanheader</a>(fp, mlist.<a class="code" href="structMATRIXLIST.html#a42676745379d69392b07b5c29626f6f9">matdir</a>[m].<a class="code" href="structMatDir.html#af91ca45aca86269901b03480b5b6d741">strtblk</a>, &amp;scan_header);
<a name="l00703"></a>00703     dim_x=scan_header.<a class="code" href="structecat63__scanheader.html#adee5ad20def49d6f13da7efde9da4e3e">dimension_1</a>; dim_y=scan_header.<a class="code" href="structecat63__scanheader.html#a87c12560397fa7408d95ad30d1800f92">dimension_2</a>;
<a name="l00704"></a>00704   } <span class="keywordflow">else</span> <span class="keywordflow">if</span>(main_header.<a class="code" href="structecat63__mainheader.html#aeb7fd4a6b107a810dcff5d82b6f58440">file_type</a>==<a class="code" href="ecat63_8h.html#a23271440af335f92b16c81abdff7818a">ATTN_DATA</a>) {
<a name="l00705"></a>00705     ret=<a class="code" href="ecat63r_8c.html#ac9c08bd1e03ddc4f4a8c83a5ea198e05">ecat63ReadAttnheader</a>(fp, mlist.<a class="code" href="structMATRIXLIST.html#a42676745379d69392b07b5c29626f6f9">matdir</a>[m].<a class="code" href="structMatDir.html#af91ca45aca86269901b03480b5b6d741">strtblk</a>, &amp;attn_header);
<a name="l00706"></a>00706     dim_x=attn_header.<a class="code" href="structecat63__attnheader.html#acbea9636493630fc7bdc3de4fcd4cfa2">dimension_1</a>; dim_y=attn_header.<a class="code" href="structecat63__attnheader.html#af9fa1e4491aa3321b4ce99f54e5ebb6e">dimension_2</a>;
<a name="l00707"></a>00707   } <span class="keywordflow">else</span> <span class="keywordflow">if</span>(main_header.<a class="code" href="structecat63__mainheader.html#aeb7fd4a6b107a810dcff5d82b6f58440">file_type</a>==<a class="code" href="ecat63_8h.html#a978e691d4d6416577705c5c654096e02">NORM_DATA</a>) {
<a name="l00708"></a>00708     ret=<a class="code" href="ecat63r_8c.html#a6a169297491f0f8a734247467cfb2b89">ecat63ReadNormheader</a>(fp, mlist.<a class="code" href="structMATRIXLIST.html#a42676745379d69392b07b5c29626f6f9">matdir</a>[m].<a class="code" href="structMatDir.html#af91ca45aca86269901b03480b5b6d741">strtblk</a>, &amp;norm_header);
<a name="l00709"></a>00709     dim_x=norm_header.<a class="code" href="structecat63__normheader.html#a546d6d89d6df87d2de51c1588884d5b5">dimension_1</a>; dim_y=norm_header.<a class="code" href="structecat63__normheader.html#aa49aa059f33fad5d960b044da8076fe7">dimension_2</a>;
<a name="l00710"></a>00710   }
<a name="l00711"></a>00711   pxlNr=dim_x*dim_y;
<a name="l00712"></a>00712   <span class="keywordflow">if</span>(ret) {
<a name="l00713"></a>00713     sprintf(<a class="code" href="ecat63_8h.html#a1a4fc8f123b2ef83d928b63743aa49d9">ecat63errmsg</a>, <span class="stringliteral">&quot;cannot read matrix %u subheader&quot;</span>, mlist.<a class="code" href="structMATRIXLIST.html#a42676745379d69392b07b5c29626f6f9">matdir</a>[m].<a class="code" href="structMatDir.html#aeb0291ec1f5ac237c1e587ed3d23b1bb">matnum</a>);
<a name="l00714"></a>00714     <a class="code" href="ecat63ml_8c.html#a2d931d7e3d4e21159731b7c480c209b9">ecat63EmptyMatlist</a>(&amp;mlist); fclose(fp); <span class="keywordflow">return</span>(7);
<a name="l00715"></a>00715   }
<a name="l00716"></a>00716 
<a name="l00717"></a>00717   <span class="comment">/* Allocate memory for ECAT data matrix */</span>
<a name="l00718"></a>00718   <span class="keywordflow">if</span>(<a class="code" href="img_8h.html#a0d66ed136e5992b7b00ce6f43bad1439">IMG_TEST</a>) printf(<span class="stringliteral">&quot;allocating memory for %d blocks\n&quot;</span>, blkNr);
<a name="l00719"></a>00719   mdata=(<span class="keywordtype">char</span>*)malloc(blkNr*<a class="code" href="ecat63_8h.html#abdf75c7aade8a596594e8e7ce8b16872">MatBLKSIZE</a>); <span class="keywordflow">if</span>(mdata==NULL) {
<a name="l00720"></a>00720     strcpy(<a class="code" href="ecat63_8h.html#a1a4fc8f123b2ef83d928b63743aa49d9">ecat63errmsg</a>, <span class="stringliteral">&quot;out of memory&quot;</span>);
<a name="l00721"></a>00721     fclose(fp); <a class="code" href="ecat63ml_8c.html#a2d931d7e3d4e21159731b7c480c209b9">ecat63EmptyMatlist</a>(&amp;mlist); <span class="keywordflow">return</span>(8);
<a name="l00722"></a>00722   }
<a name="l00723"></a>00723   <span class="comment">/* Allocate memory for whole img data */</span>
<a name="l00724"></a>00724   ret=<a class="code" href="img_8c.html#a9b2670da9c7685e6d53058cdf1db1199">imgAllocate</a>(img, planeNr, dim_y, dim_x, frameNr);
<a name="l00725"></a>00725   <span class="keywordflow">if</span>(ret) {
<a name="l00726"></a>00726     sprintf(<a class="code" href="ecat63_8h.html#a1a4fc8f123b2ef83d928b63743aa49d9">ecat63errmsg</a>, <span class="stringliteral">&quot;out of memory (%d)&quot;</span>, ret);
<a name="l00727"></a>00727     fclose(fp); <a class="code" href="ecat63ml_8c.html#a2d931d7e3d4e21159731b7c480c209b9">ecat63EmptyMatlist</a>(&amp;mlist); free(mdata); <span class="keywordflow">return</span>(8);
<a name="l00728"></a>00728   }
<a name="l00729"></a>00729 
<a name="l00730"></a>00730   <span class="comment">/* Fill img info with ECAT main and sub header information */</span>
<a name="l00731"></a>00731   img-&gt;<a class="code" href="structIMG.html#a7f83c746c35583a9fa323b94d7ea5fb5">scanner</a>=main_header.<a class="code" href="structecat63__mainheader.html#a90a0ac55f8a40ddcf53446ee30e2aa7a">system_type</a>;
<a name="l00732"></a>00732   img-&gt;<a class="code" href="structIMG.html#a53ee896ca7a94425dcf45c51eaf0a1d3">unit</a>=main_header.<a class="code" href="structecat63__mainheader.html#ad8b7b38c78851f5724f8e2095d850271">calibration_units</a>; <span class="comment">/* this continues below */</span>
<a name="l00733"></a>00733   strncpy(img-&gt;<a class="code" href="structIMG.html#ab8bcc846c896a26e5aac045b118fd5cf">radiopharmaceutical</a>, main_header.<a class="code" href="structecat63__mainheader.html#a51129743a09356f7b83e11fa0865d17d">radiopharmaceutical</a>, 32);
<a name="l00734"></a>00734   img-&gt;<a class="code" href="structIMG.html#ac9c048a9dc8205b22518b05486d8030b">isotopeHalflife</a>=main_header.<a class="code" href="structecat63__mainheader.html#aa80e2c3fda2047135338e9525b48fb17">isotope_halflife</a>;
<a name="l00735"></a>00735   memset(&amp;scanStart, 0, <span class="keyword">sizeof</span>(<span class="keyword">struct</span> tm));
<a name="l00736"></a>00736   scanStart.tm_year=main_header.<a class="code" href="structecat63__mainheader.html#ac50ce9695fe8b410dc42d611a9c3bff7">scan_start_year</a>-1900;
<a name="l00737"></a>00737   scanStart.tm_mon=main_header.<a class="code" href="structecat63__mainheader.html#accef159de133ceecb8712a22b9aaa261">scan_start_month</a>-1;
<a name="l00738"></a>00738   scanStart.tm_mday=main_header.<a class="code" href="structecat63__mainheader.html#a2d2676e349d9446fba65f1185b22b6c9">scan_start_day</a>; scanStart.tm_yday=0;
<a name="l00739"></a>00739   scanStart.tm_hour=main_header.<a class="code" href="structecat63__mainheader.html#a1f67ed153d99b8f1e5edf24850312275">scan_start_hour</a>;
<a name="l00740"></a>00740   scanStart.tm_min=main_header.<a class="code" href="structecat63__mainheader.html#a152db2ee622ee372c1a0691ef9eea5a5">scan_start_minute</a>;
<a name="l00741"></a>00741   scanStart.tm_sec=main_header.<a class="code" href="structecat63__mainheader.html#ae5de61076a9b1bfd13c22bea60c6b933">scan_start_second</a>;
<a name="l00742"></a>00742   scanStart.tm_isdst=-1;
<a name="l00743"></a>00743   img-&gt;<a class="code" href="structIMG.html#a5db78f8b423fc42b80bba42e27c7b2c3">scanStart</a>=mktime(&amp;scanStart); <span class="comment">/*printf(&quot;img-&gt;scanStart=%d\n&quot;, img-&gt;scanStart);*/</span>
<a name="l00744"></a>00744   <span class="keywordflow">if</span>(img-&gt;<a class="code" href="structIMG.html#a5db78f8b423fc42b80bba42e27c7b2c3">scanStart</a>==-1) img-&gt;<a class="code" href="structIMG.html#a5db78f8b423fc42b80bba42e27c7b2c3">scanStart</a>=0;
<a name="l00745"></a>00745   img-&gt;<a class="code" href="structIMG.html#af1d9f4bd7d58988eb4aa9f660a244a64">axialFOV</a>=10.*main_header.<a class="code" href="structecat63__mainheader.html#acfb971c6cfaffd74900fb23da894bef2">axial_fov</a>;
<a name="l00746"></a>00746   img-&gt;<a class="code" href="structIMG.html#a4a03c16266c7e7dcd6858aca05e7599f">transaxialFOV</a>=10.*main_header.<a class="code" href="structecat63__mainheader.html#a3545e9b7344313ca3f5c0e9f817d1fc4">transaxial_fov</a>;
<a name="l00747"></a>00747   strncpy(img-&gt;<a class="code" href="structIMG.html#ad76f79021c93175ec98839613ba4dcd2">studyNr</a>, main_header.<a class="code" href="structecat63__mainheader.html#ae42d92d4f2b85a68511f266f7cddfc8c">study_name</a>, MAX_STUDYNR_LEN);
<a name="l00748"></a>00748   strncpy(img-&gt;<a class="code" href="structIMG.html#a29013e391052918bd5aa6974eeec811d">patientName</a>, main_header.<a class="code" href="structecat63__mainheader.html#a7c66591db9e9dd727d6707ea1051df88">patient_name</a>, 31);
<a name="l00749"></a>00749   strncpy(img-&gt;<a class="code" href="structIMG.html#a7dc9c21dbaf6b609a32e54c708e089c1">patientID</a>, main_header.<a class="code" href="structecat63__mainheader.html#ac0ca7836b26f3bcc824110278ecb6508">patient_id</a>, 15);
<a name="l00750"></a>00750   img-&gt;<a class="code" href="structIMG.html#afc2a1d2417a8a3afe2c500173a05c472">sizez</a>=10.*main_header.<a class="code" href="structecat63__mainheader.html#afa9b56b592ebcc6a0c8a499c7b74562a">plane_separation</a>;
<a name="l00751"></a>00751   <span class="keywordflow">if</span>(main_header.<a class="code" href="structecat63__mainheader.html#aeb7fd4a6b107a810dcff5d82b6f58440">file_type</a>==<a class="code" href="ecat63_8h.html#aaf5f1adfda44941c4bf4de3e71219e4a">IMAGE_DATA</a>) {
<a name="l00752"></a>00752     img-&gt;<a class="code" href="structIMG.html#a0d9199e1c3c4bd94d56eb30e421b309c">type</a>=<a class="code" href="img_8h.html#ae8b5bb16b84adcbcd2bba3e10a36d62d">IMG_TYPE_IMAGE</a>;
<a name="l00753"></a>00753     <span class="keywordflow">if</span>(img-&gt;<a class="code" href="structIMG.html#a53ee896ca7a94425dcf45c51eaf0a1d3">unit</a>&lt;1) img-&gt;<a class="code" href="structIMG.html#a53ee896ca7a94425dcf45c51eaf0a1d3">unit</a>=image_header.<a class="code" href="structecat63__imageheader.html#a38136ac931d35627e8644ccc71d97aec">quant_units</a>;
<a name="l00754"></a>00754     img-&gt;<a class="code" href="structIMG.html#ab23da0c2295967727c6d33d0fbdc8c88">zoom</a>=image_header.<a class="code" href="structecat63__imageheader.html#a9a0fd8c173273797330c7c67effdffd6">recon_scale</a>;
<a name="l00755"></a>00755     <span class="keywordflow">if</span>(image_header.<a class="code" href="structecat63__imageheader.html#a46ec10bffd9ad4bd54271b68022bd41c">decay_corr_fctr</a>&gt;1.0) img-&gt;<a class="code" href="structIMG.html#a6ce801dea67ec8224e8cfc9aebb8a909">decayCorrected</a>=1;
<a name="l00756"></a>00756     img-&gt;<a class="code" href="structIMG.html#a02cc239e917e7ebf85e34f21448ff080">sizex</a>=img-&gt;<a class="code" href="structIMG.html#a80b0609c63f33934bf6e6678c6121cb3">sizey</a>=10.*image_header.<a class="code" href="structecat63__imageheader.html#a749a7dfb6443194317be2260fc7b5b7b">pixel_size</a>;
<a name="l00757"></a>00757     <span class="keywordflow">if</span>(img-&gt;<a class="code" href="structIMG.html#afc2a1d2417a8a3afe2c500173a05c472">sizez</a>&lt;10.*image_header.<a class="code" href="structecat63__imageheader.html#ac2b4f461866cfcbe8bf33939d461becc">slice_width</a>)
<a name="l00758"></a>00758       img-&gt;<a class="code" href="structIMG.html#afc2a1d2417a8a3afe2c500173a05c472">sizez</a>=10.*image_header.<a class="code" href="structecat63__imageheader.html#ac2b4f461866cfcbe8bf33939d461becc">slice_width</a>;
<a name="l00759"></a>00759   } <span class="keywordflow">else</span> <span class="keywordflow">if</span>(main_header.<a class="code" href="structecat63__mainheader.html#aeb7fd4a6b107a810dcff5d82b6f58440">file_type</a>==<a class="code" href="ecat63_8h.html#a7140d943b6f40ad3c4bdab5a2073c2f6">RAW_DATA</a>) {
<a name="l00760"></a>00760     img-&gt;<a class="code" href="structIMG.html#a0d9199e1c3c4bd94d56eb30e421b309c">type</a>=<a class="code" href="img_8h.html#a04e835f7aec92fcc1d4ecf37e0dd2e9c">IMG_TYPE_RAW</a>;
<a name="l00761"></a>00761     img-&gt;<a class="code" href="structIMG.html#a6ce801dea67ec8224e8cfc9aebb8a909">decayCorrected</a>=0;
<a name="l00762"></a>00762   } <span class="keywordflow">else</span> <span class="keywordflow">if</span>(main_header.<a class="code" href="structecat63__mainheader.html#aeb7fd4a6b107a810dcff5d82b6f58440">file_type</a>==<a class="code" href="ecat63_8h.html#a23271440af335f92b16c81abdff7818a">ATTN_DATA</a>) {
<a name="l00763"></a>00763     img-&gt;<a class="code" href="structIMG.html#a0d9199e1c3c4bd94d56eb30e421b309c">type</a>=<a class="code" href="img_8h.html#a04e835f7aec92fcc1d4ecf37e0dd2e9c">IMG_TYPE_RAW</a>;
<a name="l00764"></a>00764     img-&gt;<a class="code" href="structIMG.html#a6ce801dea67ec8224e8cfc9aebb8a909">decayCorrected</a>=0;
<a name="l00765"></a>00765   } <span class="keywordflow">else</span> <span class="keywordflow">if</span>(main_header.<a class="code" href="structecat63__mainheader.html#aeb7fd4a6b107a810dcff5d82b6f58440">file_type</a>==<a class="code" href="ecat63_8h.html#a978e691d4d6416577705c5c654096e02">NORM_DATA</a>) {
<a name="l00766"></a>00766     img-&gt;<a class="code" href="structIMG.html#a0d9199e1c3c4bd94d56eb30e421b309c">type</a>=<a class="code" href="img_8h.html#a04e835f7aec92fcc1d4ecf37e0dd2e9c">IMG_TYPE_RAW</a>;
<a name="l00767"></a>00767     img-&gt;<a class="code" href="structIMG.html#a6ce801dea67ec8224e8cfc9aebb8a909">decayCorrected</a>=0;
<a name="l00768"></a>00768   }
<a name="l00769"></a>00769   img-&gt;<a class="code" href="structIMG.html#a78e3164d578cf4a570e930dceb10fb51">planeNumber</a>[0]=plane;
<a name="l00770"></a>00770   strncpy(img-&gt;<a class="code" href="structIMG.html#a3651200fbb19796a635502a7b7d2c2c3">studyDescription</a>, main_header.<a class="code" href="structecat63__mainheader.html#a6322ecb4779f20b48b19360b605127e7">study_description</a>, 32);
<a name="l00771"></a>00771   strncpy(img-&gt;<a class="code" href="structIMG.html#a7743f4bab187593657c7bd4b7e99fe32">userProcessCode</a>, main_header.<a class="code" href="structecat63__mainheader.html#aeae1e01c587128f945503d87cb6d3ada">user_process_code</a>, 10); img-&gt;<a class="code" href="structIMG.html#a7743f4bab187593657c7bd4b7e99fe32">userProcessCode</a>[10]=(char)0;
<a name="l00772"></a>00772   <span class="comment">/* If valid study number is found in user_process_code, then take it */</span>  
<a name="l00773"></a>00773   <span class="keywordflow">if</span>(!img-&gt;<a class="code" href="structIMG.html#ad76f79021c93175ec98839613ba4dcd2">studyNr</a>[0] &amp;&amp; studynr_validity_check(img-&gt;<a class="code" href="structIMG.html#a7743f4bab187593657c7bd4b7e99fe32">userProcessCode</a>))
<a name="l00774"></a>00774     strcpy(img-&gt;<a class="code" href="structIMG.html#ad76f79021c93175ec98839613ba4dcd2">studyNr</a>, img-&gt;<a class="code" href="structIMG.html#a7743f4bab187593657c7bd4b7e99fe32">userProcessCode</a>);
<a name="l00775"></a>00775   <span class="comment">/* Set _fileFormat */</span>
<a name="l00776"></a>00776   img-&gt;<a class="code" href="structIMG.html#a5e25c84c23270f974f1eb7c32a01bac7">_fileFormat</a>=<a class="code" href="img_8h.html#a7d502c1293f35b4392badbb9491ee95e">IMG_E63</a>;
<a name="l00777"></a>00777 
<a name="l00778"></a>00778   <span class="comment">/* Read one ECAT matrix at a time and put them to img */</span>
<a name="l00779"></a>00779   <span class="keywordflow">for</span>(m=firstm, frame=1; m&lt;mlist.<a class="code" href="structMATRIXLIST.html#a7fcfb983a42851d8562084ddde1f9fcd">matrixNr</a>; m++) <span class="keywordflow">if</span>(mlist.<a class="code" href="structMATRIXLIST.html#a42676745379d69392b07b5c29626f6f9">matdir</a>[m].<a class="code" href="structMatDir.html#a9096ac571f3dabee56894b264552f65f">matstat</a>==1) {
<a name="l00780"></a>00780     <span class="comment">/* get plane */</span>
<a name="l00781"></a>00781     <a class="code" href="ecat63ml_8c.html#af566384e63f743897f71d8ee41b3b292">mat_numdoc</a>(mlist.<a class="code" href="structMATRIXLIST.html#a42676745379d69392b07b5c29626f6f9">matdir</a>[m].<a class="code" href="structMatDir.html#aeb0291ec1f5ac237c1e587ed3d23b1bb">matnum</a>, &amp;matval);
<a name="l00782"></a>00782     <span class="keywordflow">if</span>(matval.<a class="code" href="structMatval.html#ac87d088d281d918936f987cd19148069">plane</a>&gt;plane) <span class="keywordflow">break</span>; <span class="comment">/* Quit when current plane is read */</span>
<a name="l00783"></a>00783     <span class="comment">/* Read subheader */</span>
<a name="l00784"></a>00784     <span class="keywordflow">if</span>(main_header.<a class="code" href="structecat63__mainheader.html#aeb7fd4a6b107a810dcff5d82b6f58440">file_type</a>==<a class="code" href="ecat63_8h.html#aaf5f1adfda44941c4bf4de3e71219e4a">IMAGE_DATA</a>) {
<a name="l00785"></a>00785       ret=<a class="code" href="ecat63r_8c.html#adc36293804c18dd15771c61500841b7c">ecat63ReadImageheader</a>(fp, mlist.<a class="code" href="structMATRIXLIST.html#a42676745379d69392b07b5c29626f6f9">matdir</a>[m].<a class="code" href="structMatDir.html#af91ca45aca86269901b03480b5b6d741">strtblk</a>, &amp;image_header);
<a name="l00786"></a>00786       <span class="keywordflow">if</span>(dim_x!=image_header.<a class="code" href="structecat63__imageheader.html#a86aae28e4de4b65fa5de745aab0bf082">dimension_1</a> || dim_y!=image_header.<a class="code" href="structecat63__imageheader.html#ad53dbc60f5f5a34b7327abbf0d609d5d">dimension_2</a>) ret=1;
<a name="l00787"></a>00787       scale=image_header.<a class="code" href="structecat63__imageheader.html#ac4ff92a4d0a9b55e3647bfb45af9d381">quant_scale</a>;
<a name="l00788"></a>00788       <span class="keywordflow">if</span>(image_header.<a class="code" href="structecat63__imageheader.html#aa50b6a76225241de1056e26de450fb1c">ecat_calibration_fctr</a>&gt;0.0
<a name="l00789"></a>00789          &amp;&amp; fabs(main_header.<a class="code" href="structecat63__mainheader.html#ab8dd149fc8b61f8ccd115799e419f7e1">calibration_factor</a>/image_header.<a class="code" href="structecat63__imageheader.html#aa50b6a76225241de1056e26de450fb1c">ecat_calibration_fctr</a>-1.0)&gt;0.0001)
<a name="l00790"></a>00790         scale*=image_header.<a class="code" href="structecat63__imageheader.html#aa50b6a76225241de1056e26de450fb1c">ecat_calibration_fctr</a>;
<a name="l00791"></a>00791       <span class="keywordflow">if</span>(img-&gt;<a class="code" href="structIMG.html#a53ee896ca7a94425dcf45c51eaf0a1d3">unit</a>==0 &amp;&amp; image_header.<a class="code" href="structecat63__imageheader.html#a38136ac931d35627e8644ccc71d97aec">quant_units</a>&gt;0) img-&gt;<a class="code" href="structIMG.html#a53ee896ca7a94425dcf45c51eaf0a1d3">unit</a>=image_header.<a class="code" href="structecat63__imageheader.html#a38136ac931d35627e8644ccc71d97aec">quant_units</a>;
<a name="l00792"></a>00792       datatype=image_header.<a class="code" href="structecat63__imageheader.html#a00da8baaaefa0ca83e0c12636b298196">data_type</a>;
<a name="l00793"></a>00793       img-&gt;<a class="code" href="structIMG.html#a8ff22fc209b6f44ad14341c8644788d2">start</a>[frame-1]=image_header.<a class="code" href="structecat63__imageheader.html#a14bdbc2c5ce62d9ed0c57514b02f8f0e">frame_start_time</a>/1000.;
<a name="l00794"></a>00794       img-&gt;<a class="code" href="structIMG.html#aa2b629a51ca62bcafad0a66d32e1ca8b">end</a>[frame-1]=img-&gt;<a class="code" href="structIMG.html#a8ff22fc209b6f44ad14341c8644788d2">start</a>[frame-1]+image_header.<a class="code" href="structecat63__imageheader.html#ae4fba67f8fb4e7f72f4d74b215b39058">frame_duration</a>/1000.;
<a name="l00795"></a>00795       img-&gt;<a class="code" href="structIMG.html#af7c69142be89fac081e7f8bc354b14c8">mid</a>[frame-1]=0.5*(img-&gt;<a class="code" href="structIMG.html#a8ff22fc209b6f44ad14341c8644788d2">start</a>[frame-1]+img-&gt;<a class="code" href="structIMG.html#aa2b629a51ca62bcafad0a66d32e1ca8b">end</a>[frame-1]);
<a name="l00796"></a>00796       <span class="keywordflow">if</span>(image_header.<a class="code" href="structecat63__imageheader.html#a46ec10bffd9ad4bd54271b68022bd41c">decay_corr_fctr</a>&gt;1.0)
<a name="l00797"></a>00797         img-&gt;<a class="code" href="structIMG.html#abf0ad6e681d08c3248dbd9837afa9973">decayCorrFactor</a>[frame-1]=image_header.<a class="code" href="structecat63__imageheader.html#a46ec10bffd9ad4bd54271b68022bd41c">decay_corr_fctr</a>;
<a name="l00798"></a>00798     } <span class="keywordflow">else</span> <span class="keywordflow">if</span>(main_header.<a class="code" href="structecat63__mainheader.html#aeb7fd4a6b107a810dcff5d82b6f58440">file_type</a>==<a class="code" href="ecat63_8h.html#a7140d943b6f40ad3c4bdab5a2073c2f6">RAW_DATA</a>) {
<a name="l00799"></a>00799       ret=<a class="code" href="ecat63r_8c.html#a811c9c52c52f1c749ee6cb0f7a51f884">ecat63ReadScanheader</a>(fp, mlist.<a class="code" href="structMATRIXLIST.html#a42676745379d69392b07b5c29626f6f9">matdir</a>[m].<a class="code" href="structMatDir.html#af91ca45aca86269901b03480b5b6d741">strtblk</a>, &amp;scan_header);
<a name="l00800"></a>00800       <span class="keywordflow">if</span>(dim_x!=scan_header.<a class="code" href="structecat63__scanheader.html#adee5ad20def49d6f13da7efde9da4e3e">dimension_1</a> || dim_y!=scan_header.<a class="code" href="structecat63__scanheader.html#a87c12560397fa7408d95ad30d1800f92">dimension_2</a>) ret=1;
<a name="l00801"></a>00801       scale=scan_header.<a class="code" href="structecat63__scanheader.html#acfabab41eaa593a0625a43057bd9b558">scale_factor</a>;
<a name="l00802"></a>00802       <span class="keywordflow">if</span>(scan_header.<a class="code" href="structecat63__scanheader.html#a3077aca1fa9f9b64c57f4b6eb19780fb">loss_correction_fctr</a>&gt;0.0) scale*=scan_header.<a class="code" href="structecat63__scanheader.html#a3077aca1fa9f9b64c57f4b6eb19780fb">loss_correction_fctr</a>;
<a name="l00803"></a>00803       datatype=scan_header.<a class="code" href="structecat63__scanheader.html#ad1ee12caf8404e9237c9b14d95711109">data_type</a>;
<a name="l00804"></a>00804       img-&gt;<a class="code" href="structIMG.html#a8ff22fc209b6f44ad14341c8644788d2">start</a>[frame-1]=scan_header.<a class="code" href="structecat63__scanheader.html#aa7214f91108a9d7a5bec6f0edbe3493d">frame_start_time</a>/1000.;
<a name="l00805"></a>00805       img-&gt;<a class="code" href="structIMG.html#aa2b629a51ca62bcafad0a66d32e1ca8b">end</a>[frame-1]=img-&gt;<a class="code" href="structIMG.html#a8ff22fc209b6f44ad14341c8644788d2">start</a>[frame-1]+scan_header.<a class="code" href="structecat63__scanheader.html#a253426410960e4047acfb591c24e179b">frame_duration</a>/1000.;
<a name="l00806"></a>00806       img-&gt;<a class="code" href="structIMG.html#af7c69142be89fac081e7f8bc354b14c8">mid</a>[frame-1]=0.5*(img-&gt;<a class="code" href="structIMG.html#a8ff22fc209b6f44ad14341c8644788d2">start</a>[frame-1]+img-&gt;<a class="code" href="structIMG.html#aa2b629a51ca62bcafad0a66d32e1ca8b">end</a>[frame-1]);
<a name="l00807"></a>00807       img-&gt;<a class="code" href="structIMG.html#a399dae5b27dda8d5e1b0e96c885513e4">sampleDistance</a>=10.0*scan_header.<a class="code" href="structecat63__scanheader.html#acb676ed22b052fbaa07bd044263ac279">sample_distance</a>;
<a name="l00808"></a>00808       img-&gt;<a class="code" href="structIMG.html#a76d63a001b8569d9f80ccb325e064be1">prompts</a>[frame-1]=(float)scan_header.<a class="code" href="structecat63__scanheader.html#a28b007d345ada719bb886fd7a2683d76">prompts</a>;
<a name="l00809"></a>00809       img-&gt;<a class="code" href="structIMG.html#ae47ebbbdc0c308f473fec801a2df513d">randoms</a>[frame-1]=(<span class="keywordtype">float</span>)scan_header.<a class="code" href="structecat63__scanheader.html#ad0a2468779aec56e8d45ca685834eb16">delayed</a>;
<a name="l00810"></a>00810     } <span class="keywordflow">else</span> <span class="keywordflow">if</span>(main_header.<a class="code" href="structecat63__mainheader.html#aeb7fd4a6b107a810dcff5d82b6f58440">file_type</a>==<a class="code" href="ecat63_8h.html#a23271440af335f92b16c81abdff7818a">ATTN_DATA</a>) {
<a name="l00811"></a>00811       ret=<a class="code" href="ecat63r_8c.html#ac9c08bd1e03ddc4f4a8c83a5ea198e05">ecat63ReadAttnheader</a>(fp, mlist.<a class="code" href="structMATRIXLIST.html#a42676745379d69392b07b5c29626f6f9">matdir</a>[m].<a class="code" href="structMatDir.html#af91ca45aca86269901b03480b5b6d741">strtblk</a>, &amp;attn_header);
<a name="l00812"></a>00812       <span class="keywordflow">if</span>(dim_x!=attn_header.<a class="code" href="structecat63__attnheader.html#acbea9636493630fc7bdc3de4fcd4cfa2">dimension_1</a> || dim_y!=attn_header.<a class="code" href="structecat63__attnheader.html#af9fa1e4491aa3321b4ce99f54e5ebb6e">dimension_2</a>) ret=1;
<a name="l00813"></a>00813       scale=attn_header.<a class="code" href="structecat63__attnheader.html#a649891350c3b30214f43ca2d640a0e47">scale_factor</a>;
<a name="l00814"></a>00814       datatype=attn_header.<a class="code" href="structecat63__attnheader.html#ac5bea9d6b3dae0b4c87d5e66a0d2006e">data_type</a>;
<a name="l00815"></a>00815     } <span class="keywordflow">else</span> <span class="keywordflow">if</span>(main_header.<a class="code" href="structecat63__mainheader.html#aeb7fd4a6b107a810dcff5d82b6f58440">file_type</a>==<a class="code" href="ecat63_8h.html#a978e691d4d6416577705c5c654096e02">NORM_DATA</a>) {
<a name="l00816"></a>00816       ret=<a class="code" href="ecat63r_8c.html#a6a169297491f0f8a734247467cfb2b89">ecat63ReadNormheader</a>(fp, mlist.<a class="code" href="structMATRIXLIST.html#a42676745379d69392b07b5c29626f6f9">matdir</a>[m].<a class="code" href="structMatDir.html#af91ca45aca86269901b03480b5b6d741">strtblk</a>, &amp;norm_header);
<a name="l00817"></a>00817       <span class="keywordflow">if</span>(dim_x!=norm_header.<a class="code" href="structecat63__normheader.html#a546d6d89d6df87d2de51c1588884d5b5">dimension_1</a> || dim_y!=norm_header.<a class="code" href="structecat63__normheader.html#aa49aa059f33fad5d960b044da8076fe7">dimension_2</a>) ret=1;
<a name="l00818"></a>00818       scale=norm_header.<a class="code" href="structecat63__normheader.html#a914977ee68c14326a4551abae57fc9ab">scale_factor</a>;
<a name="l00819"></a>00819       datatype=norm_header.<a class="code" href="structecat63__normheader.html#ae7d4136070d36e9edbe684a80e39b942">data_type</a>;
<a name="l00820"></a>00820     } <span class="keywordflow">else</span> datatype=-1;
<a name="l00821"></a>00821     <span class="keywordflow">if</span>(ret) {
<a name="l00822"></a>00822       sprintf(<a class="code" href="ecat63_8h.html#a1a4fc8f123b2ef83d928b63743aa49d9">ecat63errmsg</a>, <span class="stringliteral">&quot;cannot read matrix %u subheader&quot;</span>, mlist.<a class="code" href="structMATRIXLIST.html#a42676745379d69392b07b5c29626f6f9">matdir</a>[m].<a class="code" href="structMatDir.html#aeb0291ec1f5ac237c1e587ed3d23b1bb">matnum</a>);
<a name="l00823"></a>00823       <a class="code" href="ecat63ml_8c.html#a2d931d7e3d4e21159731b7c480c209b9">ecat63EmptyMatlist</a>(&amp;mlist); free(mdata); fclose(fp); <span class="keywordflow">return</span>(7);
<a name="l00824"></a>00824     }
<a name="l00825"></a>00825     <span class="keywordflow">if</span>(main_header.<a class="code" href="structecat63__mainheader.html#ab8dd149fc8b61f8ccd115799e419f7e1">calibration_factor</a>&gt;0.0) scale*=main_header.<a class="code" href="structecat63__mainheader.html#ab8dd149fc8b61f8ccd115799e419f7e1">calibration_factor</a>;
<a name="l00826"></a>00826     <span class="keywordflow">if</span>(<a class="code" href="img_8h.html#a0d66ed136e5992b7b00ce6f43bad1439">IMG_TEST</a>&gt;2) printf(<span class="stringliteral">&quot;scale=%e datatype=%d\n&quot;</span>, scale, datatype);
<a name="l00827"></a>00827     <span class="comment">/* Read the pixel data */</span>
<a name="l00828"></a>00828     ret=<a class="code" href="ecat63r_8c.html#a7f3456ddf0f774026d462df66bf1210b">ecat63ReadMatdata</a>(fp, mlist.<a class="code" href="structMATRIXLIST.html#a42676745379d69392b07b5c29626f6f9">matdir</a>[m].<a class="code" href="structMatDir.html#af91ca45aca86269901b03480b5b6d741">strtblk</a>+1,
<a name="l00829"></a>00829          mlist.<a class="code" href="structMATRIXLIST.html#a42676745379d69392b07b5c29626f6f9">matdir</a>[m].<a class="code" href="structMatDir.html#ad1781958d48d68431d0c3b630093994f">endblk</a>-mlist.<a class="code" href="structMATRIXLIST.html#a42676745379d69392b07b5c29626f6f9">matdir</a>[m].<a class="code" href="structMatDir.html#af91ca45aca86269901b03480b5b6d741">strtblk</a>,
<a name="l00830"></a>00830          mdata, datatype);
<a name="l00831"></a>00831     <span class="keywordflow">if</span>(ret) {
<a name="l00832"></a>00832       strcpy(<a class="code" href="ecat63_8h.html#a1a4fc8f123b2ef83d928b63743aa49d9">ecat63errmsg</a>, <span class="stringliteral">&quot;cannot read matrix data&quot;</span>);
<a name="l00833"></a>00833       <a class="code" href="ecat63ml_8c.html#a2d931d7e3d4e21159731b7c480c209b9">ecat63EmptyMatlist</a>(&amp;mlist); free(mdata); fclose(fp); <span class="keywordflow">return</span>(9);
<a name="l00834"></a>00834     }
<a name="l00835"></a>00835     <span class="keywordflow">if</span>(datatype==<a class="code" href="ecat63_8h.html#a8e1f9f0fd436e762641718456852ee80">BYTE_TYPE</a>) {
<a name="l00836"></a>00836       <span class="keywordflow">for</span>(i=0, mptr=mdata; i&lt;dim_y; i++) <span class="keywordflow">for</span>(j=0; j&lt;dim_x; j++, mptr++) {
<a name="l00837"></a>00837         img-&gt;<a class="code" href="structIMG.html#a43e2c98dc0728731601a76abd51bb935">m</a>[0][i][j][frame-1]=scale*(float)(*mptr);
<a name="l00838"></a>00838       }
<a name="l00839"></a>00839     } <span class="keywordflow">else</span> <span class="keywordflow">if</span>(datatype==<a class="code" href="ecat63_8h.html#ab6ed0aaf03f063c606604089878ed91a">VAX_I2</a> || datatype==<a class="code" href="ecat63_8h.html#aebd1500a1497c6489f1820442db218d2">SUN_I2</a>) {
<a name="l00840"></a>00840       <span class="keywordflow">for</span>(i=0, mptr=mdata; i&lt;dim_y; i++) <span class="keywordflow">for</span>(j=0; j&lt;dim_x; j++, mptr+=2) {
<a name="l00841"></a>00841         sptr=(<span class="keywordtype">short</span> <span class="keywordtype">int</span>*)mptr;
<a name="l00842"></a>00842         img-&gt;<a class="code" href="structIMG.html#a43e2c98dc0728731601a76abd51bb935">m</a>[0][i][j][frame-1]=scale*(float)(*sptr);
<a name="l00843"></a>00843       }
<a name="l00844"></a>00844     } <span class="keywordflow">else</span> <span class="keywordflow">if</span>(datatype==<a class="code" href="ecat63_8h.html#a91402eabd36b6383a537f5ba993e1d13">VAX_I4</a> || datatype==<a class="code" href="ecat63_8h.html#a105892e015b38ae62e69684acf6df31d">SUN_I4</a>) {
<a name="l00845"></a>00845       <span class="keywordflow">for</span>(i=0, mptr=mdata; i&lt;dim_y; i++) <span class="keywordflow">for</span>(j=0; j&lt;dim_x; j++, mptr+=4) {
<a name="l00846"></a>00846         iptr=(<span class="keywordtype">int</span>*)mptr;
<a name="l00847"></a>00847         img-&gt;<a class="code" href="structIMG.html#a43e2c98dc0728731601a76abd51bb935">m</a>[0][i][j][frame-1]=scale*(float)(*iptr);
<a name="l00848"></a>00848       }
<a name="l00849"></a>00849     } <span class="keywordflow">else</span> <span class="keywordflow">if</span>(datatype==<a class="code" href="ecat63_8h.html#a43d671e0f827418673872adcd63418c4">VAX_R4</a> || datatype==<a class="code" href="ecat63_8h.html#a6001c489ee0296a6dca313ee3bfe4412">IEEE_R4</a>) {
<a name="l00850"></a>00850       <span class="keywordflow">for</span>(i=0, mptr=mdata; i&lt;dim_y; i++) <span class="keywordflow">for</span>(j=0; j&lt;dim_x; j++, mptr+=4) {
<a name="l00851"></a>00851         memcpy(&amp;img-&gt;<a class="code" href="structIMG.html#a43e2c98dc0728731601a76abd51bb935">m</a>[0][i][j][frame-1], mptr, 4);
<a name="l00852"></a>00852         img-&gt;<a class="code" href="structIMG.html#a43e2c98dc0728731601a76abd51bb935">m</a>[0][i][j][frame-1]*=scale;
<a name="l00853"></a>00853       }
<a name="l00854"></a>00854     }
<a name="l00855"></a>00855     frame++;
<a name="l00856"></a>00856   } <span class="comment">/* next matrix (frame) */</span>
<a name="l00857"></a>00857   <span class="comment">/* Set the unit */</span>
<a name="l00858"></a>00858   <a class="code" href="imgunit_8c.html#a99853914e3480ab82c7163b0612e8b28">imgUnitFromEcat</a>(img, img-&gt;<a class="code" href="structIMG.html#a53ee896ca7a94425dcf45c51eaf0a1d3">unit</a>);
<a name="l00859"></a>00859 
<a name="l00860"></a>00860   <span class="comment">/* Free memory and close file */</span>
<a name="l00861"></a>00861   free(mdata);
<a name="l00862"></a>00862   <a class="code" href="ecat63ml_8c.html#a2d931d7e3d4e21159731b7c480c209b9">ecat63EmptyMatlist</a>(&amp;mlist);
<a name="l00863"></a>00863   fclose(fp);
<a name="l00864"></a>00864 
<a name="l00865"></a>00865   <span class="comment">/* Set _dataType if it has not been set before */</span>
<a name="l00866"></a>00866   <span class="keywordflow">if</span>(img-&gt;<a class="code" href="structIMG.html#a780bf2ffdee9e977a3a51febb7696701">_dataType</a>&lt;1) img-&gt;<a class="code" href="structIMG.html#a780bf2ffdee9e977a3a51febb7696701">_dataType</a>=datatype;
<a name="l00867"></a>00867   <span class="comment">/* For saving, only 2-byte VAX data types are allowed */</span>
<a name="l00868"></a>00868   <span class="keywordflow">if</span>(img-&gt;<a class="code" href="structIMG.html#a780bf2ffdee9e977a3a51febb7696701">_dataType</a>==<a class="code" href="ecat63_8h.html#a91402eabd36b6383a537f5ba993e1d13">VAX_I4</a> || img-&gt;<a class="code" href="structIMG.html#a780bf2ffdee9e977a3a51febb7696701">_dataType</a>==<a class="code" href="ecat63_8h.html#a43d671e0f827418673872adcd63418c4">VAX_R4</a>) img-&gt;<a class="code" href="structIMG.html#a780bf2ffdee9e977a3a51febb7696701">_dataType</a>=<a class="code" href="ecat63_8h.html#ab6ed0aaf03f063c606604089878ed91a">VAX_I2</a>;
<a name="l00869"></a>00869 
<a name="l00870"></a>00870   <span class="keywordflow">return</span>(0);
<a name="l00871"></a>00871 }
<a name="l00872"></a>00872 <span class="comment">/*****************************************************************************/</span>
<a name="l00873"></a>00873 
<a name="l00874"></a>00874 <span class="comment">/*****************************************************************************/</span>
<a name="l00886"></a><a class="code" href="imgfile_8h.html#aa55c8e37d5f65af955121db0311dd8ea">00886</a> <span class="keywordtype">int</span> <a class="code" href="img__e63_8c.html#aa55c8e37d5f65af955121db0311dd8ea">ecat63AddImg</a>(<span class="keyword">const</span> <span class="keywordtype">char</span> *fname, <a class="code" href="structIMG.html">IMG</a> *img) {
<a name="l00887"></a>00887   <span class="keywordtype">int</span>                 n, i, j, m, ret=0, add=0;
<a name="l00888"></a>00888   <span class="keywordtype">int</span>                 frameNr, planeNr;
<a name="l00889"></a>00889   <span class="keywordtype">int</span>                 frame, plane, prev_frame, prev_plane;
<a name="l00890"></a>00890   <span class="keywordtype">float</span>               f, fmax, fmin, g, scale;
<a name="l00891"></a>00891   <span class="keywordtype">short</span> <span class="keywordtype">int</span>          *sdata, *sptr, smin, smax;
<a name="l00892"></a>00892   FILE               *fp;
<a name="l00893"></a>00893   <a class="code" href="structecat63__mainheader.html">ECAT63_mainheader</a>   main_header;
<a name="l00894"></a>00894   <a class="code" href="structecat63__imageheader.html">ECAT63_imageheader</a>  image_header;
<a name="l00895"></a>00895   <a class="code" href="structecat63__scanheader.html">ECAT63_scanheader</a>   scan_header;
<a name="l00896"></a>00896   <a class="code" href="structMATRIXLIST.html">MATRIXLIST</a>          mlist;
<a name="l00897"></a>00897   <a class="code" href="structMatDir.html">MatDir</a>              tmpMatdir;
<a name="l00898"></a>00898   <a class="code" href="structMatval.html">Matval</a>              matval;
<a name="l00899"></a>00899   <span class="keyword">struct </span>tm          *scanStart;
<a name="l00900"></a>00900 
<a name="l00901"></a>00901 
<a name="l00902"></a>00902   <span class="keywordflow">if</span>(<a class="code" href="img_8h.html#a0d66ed136e5992b7b00ce6f43bad1439">IMG_TEST</a>) printf(<span class="stringliteral">&quot;ecat63AddImg(%s, *img)\n&quot;</span>, fname);
<a name="l00903"></a>00903   <span class="keywordflow">if</span>(<a class="code" href="img_8h.html#a0d66ed136e5992b7b00ce6f43bad1439">IMG_TEST</a>&gt;1) <a class="code" href="img_8c.html#a32edd1b78039f6cc22b7bbe413aa3a56">imgInfo</a>(img);
<a name="l00904"></a>00904   <span class="comment">/* Check the arguments */</span>
<a name="l00905"></a>00905   <span class="keywordflow">if</span>(fname==NULL) {strcpy(<a class="code" href="ecat63_8h.html#a1a4fc8f123b2ef83d928b63743aa49d9">ecat63errmsg</a>, <span class="stringliteral">&quot;invalid ECAT filename&quot;</span>); <span class="keywordflow">return</span>(1);}
<a name="l00906"></a>00906   <span class="keywordflow">if</span>(img==NULL || img-&gt;<a class="code" href="structIMG.html#a5b8bdc61088df4a3c3f89c31895b14a4">status</a>!=<a class="code" href="img_8h.html#a3117b1b0649d3761dcda1395202129e5">IMG_STATUS_OCCUPIED</a>) {
<a name="l00907"></a>00907     strcpy(<a class="code" href="ecat63_8h.html#a1a4fc8f123b2ef83d928b63743aa49d9">ecat63errmsg</a>, <span class="stringliteral">&quot;image data is empty&quot;</span>); <span class="keywordflow">return</span>(2);}
<a name="l00908"></a>00908   <span class="keywordflow">if</span>(img-&gt;<a class="code" href="structIMG.html#a780bf2ffdee9e977a3a51febb7696701">_dataType</a>&lt;1) img-&gt;<a class="code" href="structIMG.html#a780bf2ffdee9e977a3a51febb7696701">_dataType</a>=<a class="code" href="ecat63_8h.html#ab6ed0aaf03f063c606604089878ed91a">VAX_I2</a>;
<a name="l00909"></a>00909 
<a name="l00910"></a>00910   <span class="comment">/* Initiate headers */</span>
<a name="l00911"></a>00911   memset(&amp;main_header, 0, <span class="keyword">sizeof</span>(<a class="code" href="structecat63__mainheader.html">ECAT63_mainheader</a>));
<a name="l00912"></a>00912   memset(&amp;image_header,0, <span class="keyword">sizeof</span>(<a class="code" href="structecat63__imageheader.html">ECAT63_imageheader</a>));
<a name="l00913"></a>00913   memset(&amp;scan_header, 0, <span class="keyword">sizeof</span>(<a class="code" href="structecat63__scanheader.html">ECAT63_scanheader</a>));
<a name="l00914"></a>00914 
<a name="l00915"></a>00915   <span class="comment">/* Make a main header */</span>
<a name="l00916"></a>00916   main_header.<a class="code" href="structecat63__mainheader.html#a433a5fddd8c83644a9f081001815c6e6">sw_version</a>=2;
<a name="l00917"></a>00917   main_header.<a class="code" href="structecat63__mainheader.html#aec1a2e31ad9fa2e9d03220565bc3cfa0">num_planes</a>=img-&gt;<a class="code" href="structIMG.html#a9c04780b47e6a627a2b700b76352c3fc">dimz</a>;  
<a name="l00918"></a>00918   main_header.<a class="code" href="structecat63__mainheader.html#a01ad1f4be366fb3ad82da61022e9761c">num_frames</a>=img-&gt;<a class="code" href="structIMG.html#a77605d4aa64b86294590c79e9a761b15">dimt</a>;  
<a name="l00919"></a>00919   main_header.<a class="code" href="structecat63__mainheader.html#a5038021b6504d93e304931a95af64746">num_gates</a>=1;
<a name="l00920"></a>00920   main_header.<a class="code" href="structecat63__mainheader.html#ad8cbcc286f61bd37eb2a6f196b88a4bb">num_bed_pos</a>=1;
<a name="l00921"></a>00921   <span class="keywordflow">if</span>(img-&gt;<a class="code" href="structIMG.html#a0d9199e1c3c4bd94d56eb30e421b309c">type</a>==<a class="code" href="img_8h.html#ae8b5bb16b84adcbcd2bba3e10a36d62d">IMG_TYPE_IMAGE</a>) main_header.<a class="code" href="structecat63__mainheader.html#aeb7fd4a6b107a810dcff5d82b6f58440">file_type</a>=<a class="code" href="ecat63_8h.html#aaf5f1adfda44941c4bf4de3e71219e4a">IMAGE_DATA</a>;
<a name="l00922"></a>00922   <span class="keywordflow">else</span> main_header.<a class="code" href="structecat63__mainheader.html#aeb7fd4a6b107a810dcff5d82b6f58440">file_type</a>=<a class="code" href="ecat63_8h.html#a7140d943b6f40ad3c4bdab5a2073c2f6">RAW_DATA</a>;
<a name="l00923"></a>00923   main_header.<a class="code" href="structecat63__mainheader.html#a727d6abe8019b32f33965c76ca19a9ee">data_type</a>=img-&gt;<a class="code" href="structIMG.html#a780bf2ffdee9e977a3a51febb7696701">_dataType</a>;
<a name="l00924"></a>00924   <span class="keywordflow">if</span>(img-&gt;<a class="code" href="structIMG.html#a7f83c746c35583a9fa323b94d7ea5fb5">scanner</a>&gt;0) main_header.<a class="code" href="structecat63__mainheader.html#a90a0ac55f8a40ddcf53446ee30e2aa7a">system_type</a>=img-&gt;<a class="code" href="structIMG.html#a7f83c746c35583a9fa323b94d7ea5fb5">scanner</a>;
<a name="l00925"></a>00925   <span class="keywordflow">else</span> main_header.<a class="code" href="structecat63__mainheader.html#a90a0ac55f8a40ddcf53446ee30e2aa7a">system_type</a>=<a class="code" href="ecat63_8h.html#a4aad8bedf2b4765e35f5933a7c6b8558">ECAT63_SYSTEM_TYPE_DEFAULT</a>;
<a name="l00926"></a>00926   main_header.<a class="code" href="structecat63__mainheader.html#ab8dd149fc8b61f8ccd115799e419f7e1">calibration_factor</a>=1.0;
<a name="l00927"></a>00927   main_header.<a class="code" href="structecat63__mainheader.html#acfb971c6cfaffd74900fb23da894bef2">axial_fov</a>=img-&gt;<a class="code" href="structIMG.html#af1d9f4bd7d58988eb4aa9f660a244a64">axialFOV</a>/10.0;
<a name="l00928"></a>00928   main_header.<a class="code" href="structecat63__mainheader.html#a3545e9b7344313ca3f5c0e9f817d1fc4">transaxial_fov</a>=img-&gt;<a class="code" href="structIMG.html#a4a03c16266c7e7dcd6858aca05e7599f">transaxialFOV</a>/10.0;
<a name="l00929"></a>00929   main_header.<a class="code" href="structecat63__mainheader.html#afa9b56b592ebcc6a0c8a499c7b74562a">plane_separation</a>=img-&gt;<a class="code" href="structIMG.html#afc2a1d2417a8a3afe2c500173a05c472">sizez</a>/10.0;
<a name="l00930"></a>00930   main_header.<a class="code" href="structecat63__mainheader.html#ad8b7b38c78851f5724f8e2095d850271">calibration_units</a>=<a class="code" href="imgunit_8c.html#a0d8d16b27eaefdf56d32b5c4c51f3757">imgUnitToEcat6</a>(img);
<a name="l00931"></a>00931   strncpy(main_header.<a class="code" href="structecat63__mainheader.html#a51129743a09356f7b83e11fa0865d17d">radiopharmaceutical</a>, img-&gt;<a class="code" href="structIMG.html#ab8bcc846c896a26e5aac045b118fd5cf">radiopharmaceutical</a>, 32);
<a name="l00932"></a>00932   scanStart=localtime(&amp;img-&gt;<a class="code" href="structIMG.html#a5db78f8b423fc42b80bba42e27c7b2c3">scanStart</a>);
<a name="l00933"></a>00933   <span class="keywordflow">if</span>(scanStart!=NULL) {
<a name="l00934"></a>00934     main_header.<a class="code" href="structecat63__mainheader.html#ac50ce9695fe8b410dc42d611a9c3bff7">scan_start_year</a>=scanStart-&gt;tm_year+1900;
<a name="l00935"></a>00935     main_header.<a class="code" href="structecat63__mainheader.html#accef159de133ceecb8712a22b9aaa261">scan_start_month</a>=scanStart-&gt;tm_mon+1;
<a name="l00936"></a>00936     main_header.<a class="code" href="structecat63__mainheader.html#a2d2676e349d9446fba65f1185b22b6c9">scan_start_day</a>=scanStart-&gt;tm_mday;
<a name="l00937"></a>00937     main_header.<a class="code" href="structecat63__mainheader.html#a1f67ed153d99b8f1e5edf24850312275">scan_start_hour</a>=scanStart-&gt;tm_hour;
<a name="l00938"></a>00938     main_header.<a class="code" href="structecat63__mainheader.html#a152db2ee622ee372c1a0691ef9eea5a5">scan_start_minute</a>=scanStart-&gt;tm_min;
<a name="l00939"></a>00939     main_header.<a class="code" href="structecat63__mainheader.html#ae5de61076a9b1bfd13c22bea60c6b933">scan_start_second</a>=scanStart-&gt;tm_sec;
<a name="l00940"></a>00940   } <span class="keywordflow">else</span> {
<a name="l00941"></a>00941     main_header.<a class="code" href="structecat63__mainheader.html#ac50ce9695fe8b410dc42d611a9c3bff7">scan_start_year</a>=1900;
<a name="l00942"></a>00942     main_header.<a class="code" href="structecat63__mainheader.html#accef159de133ceecb8712a22b9aaa261">scan_start_month</a>=1;
<a name="l00943"></a>00943     main_header.<a class="code" href="structecat63__mainheader.html#a2d2676e349d9446fba65f1185b22b6c9">scan_start_day</a>=1;
<a name="l00944"></a>00944     main_header.<a class="code" href="structecat63__mainheader.html#a1f67ed153d99b8f1e5edf24850312275">scan_start_hour</a>=0;
<a name="l00945"></a>00945     main_header.<a class="code" href="structecat63__mainheader.html#a152db2ee622ee372c1a0691ef9eea5a5">scan_start_minute</a>=0;
<a name="l00946"></a>00946     main_header.<a class="code" href="structecat63__mainheader.html#ae5de61076a9b1bfd13c22bea60c6b933">scan_start_second</a>=0;
<a name="l00947"></a>00947   }
<a name="l00948"></a>00948   main_header.<a class="code" href="structecat63__mainheader.html#aa80e2c3fda2047135338e9525b48fb17">isotope_halflife</a>=img-&gt;<a class="code" href="structIMG.html#ac9c048a9dc8205b22518b05486d8030b">isotopeHalflife</a>;
<a name="l00949"></a>00949   strcpy(main_header.<a class="code" href="structecat63__mainheader.html#ad5e1bd9b72bdc5e5cc820bf25231bef5">isotope_code</a>, <a class="code" href="imgdecay_8c.html#a14db419685f526306032a84343eed72c">imgIsotope</a>(img));
<a name="l00950"></a>00950   strcpy(main_header.<a class="code" href="structecat63__mainheader.html#ae42d92d4f2b85a68511f266f7cddfc8c">study_name</a>, img-&gt;<a class="code" href="structIMG.html#ad76f79021c93175ec98839613ba4dcd2">studyNr</a>);
<a name="l00951"></a>00951   strcpy(main_header.<a class="code" href="structecat63__mainheader.html#a7c66591db9e9dd727d6707ea1051df88">patient_name</a>, img-&gt;<a class="code" href="structIMG.html#a29013e391052918bd5aa6974eeec811d">patientName</a>);
<a name="l00952"></a>00952   strcpy(main_header.<a class="code" href="structecat63__mainheader.html#ac0ca7836b26f3bcc824110278ecb6508">patient_id</a>, img-&gt;<a class="code" href="structIMG.html#a7dc9c21dbaf6b609a32e54c708e089c1">patientID</a>);
<a name="l00953"></a>00953   strncpy(main_header.<a class="code" href="structecat63__mainheader.html#a6322ecb4779f20b48b19360b605127e7">study_description</a>, img-&gt;<a class="code" href="structIMG.html#a3651200fbb19796a635502a7b7d2c2c3">studyDescription</a>, 32);
<a name="l00954"></a>00954   strncpy(main_header.<a class="code" href="structecat63__mainheader.html#aeae1e01c587128f945503d87cb6d3ada">user_process_code</a>, img-&gt;<a class="code" href="structIMG.html#a7743f4bab187593657c7bd4b7e99fe32">userProcessCode</a>, 10);
<a name="l00955"></a>00955 
<a name="l00956"></a>00956   <span class="comment">/* Check if the ECAT file exists */</span>
<a name="l00957"></a>00957   <span class="keywordflow">if</span>(access(fname, 0) != -1) {
<a name="l00958"></a>00958     <span class="keywordflow">if</span>(<a class="code" href="img_8h.html#a0d66ed136e5992b7b00ce6f43bad1439">IMG_TEST</a>) printf(<span class="stringliteral">&quot;Opening existing ECAT file.\n&quot;</span>);
<a name="l00959"></a>00959     add=1;
<a name="l00960"></a>00960     <span class="comment">/* Open the ECAT file */</span>
<a name="l00961"></a>00961     <span class="keywordflow">if</span>((fp=fopen(fname, <span class="stringliteral">&quot;rb+&quot;</span>)) == NULL) {
<a name="l00962"></a>00962       strcpy(<a class="code" href="ecat63_8h.html#a1a4fc8f123b2ef83d928b63743aa49d9">ecat63errmsg</a>, <span class="stringliteral">&quot;cannot create ECAT file&quot;</span>); <span class="keywordflow">return</span>(3);}
<a name="l00963"></a>00963     <span class="comment">/* Read main header */</span>
<a name="l00964"></a>00964     <span class="keywordflow">if</span>((ret=<a class="code" href="ecat63r_8c.html#af904c6b26259c4f280cdc18f92aeeae5">ecat63ReadMainheader</a>(fp, &amp;main_header))) {
<a name="l00965"></a>00965       sprintf(<a class="code" href="ecat63_8h.html#a1a4fc8f123b2ef83d928b63743aa49d9">ecat63errmsg</a>, <span class="stringliteral">&quot;cannot read main header (%d)&quot;</span>, ret);
<a name="l00966"></a>00966       fclose(fp); <span class="keywordflow">return</span>(3);
<a name="l00967"></a>00967     }
<a name="l00968"></a>00968     fflush(fp);
<a name="l00969"></a>00969     <span class="comment">/* Check that filetypes are matching */</span>
<a name="l00970"></a>00970     <span class="keywordflow">if</span>((main_header.<a class="code" href="structecat63__mainheader.html#aeb7fd4a6b107a810dcff5d82b6f58440">file_type</a>==<a class="code" href="ecat63_8h.html#aaf5f1adfda44941c4bf4de3e71219e4a">IMAGE_DATA</a> &amp;&amp; img-&gt;<a class="code" href="structIMG.html#a0d9199e1c3c4bd94d56eb30e421b309c">type</a>==<a class="code" href="img_8h.html#ae8b5bb16b84adcbcd2bba3e10a36d62d">IMG_TYPE_IMAGE</a>) ||
<a name="l00971"></a>00971        (main_header.<a class="code" href="structecat63__mainheader.html#aeb7fd4a6b107a810dcff5d82b6f58440">file_type</a>==<a class="code" href="ecat63_8h.html#a7140d943b6f40ad3c4bdab5a2073c2f6">RAW_DATA</a> &amp;&amp; img-&gt;<a class="code" href="structIMG.html#a0d9199e1c3c4bd94d56eb30e421b309c">type</a>==<a class="code" href="img_8h.html#a04e835f7aec92fcc1d4ecf37e0dd2e9c">IMG_TYPE_RAW</a>)) {
<a name="l00972"></a>00972       <span class="comment">/* ok */</span>
<a name="l00973"></a>00973     } <span class="keywordflow">else</span> {
<a name="l00974"></a>00974       sprintf(<a class="code" href="ecat63_8h.html#a1a4fc8f123b2ef83d928b63743aa49d9">ecat63errmsg</a>, <span class="stringliteral">&quot;cannot add different filetype&quot;</span>);
<a name="l00975"></a>00975       fclose(fp); <span class="keywordflow">return</span>(3);
<a name="l00976"></a>00976     }
<a name="l00977"></a>00977   } <span class="keywordflow">else</span> {
<a name="l00978"></a>00978     <span class="keywordflow">if</span>(<a class="code" href="img_8h.html#a0d66ed136e5992b7b00ce6f43bad1439">IMG_TEST</a>) printf(<span class="stringliteral">&quot;ECAT file does not exist.\n&quot;</span>);
<a name="l00979"></a>00979     add=0;
<a name="l00980"></a>00980     <span class="comment">/* Create output ECAT file */</span>
<a name="l00981"></a>00981     fp=<a class="code" href="ecat63w_8c.html#aa9545a4a59002bf59a77478977f479eb">ecat63Create</a>(fname, &amp;main_header);
<a name="l00982"></a>00982     <span class="keywordflow">if</span>(fp==NULL) {strcpy(<a class="code" href="ecat63_8h.html#a1a4fc8f123b2ef83d928b63743aa49d9">ecat63errmsg</a>, <span class="stringliteral">&quot;cannot create ECAT file&quot;</span>); <span class="keywordflow">return</span>(3);}
<a name="l00983"></a>00983   }
<a name="l00984"></a>00984   <span class="keywordflow">if</span>(<a class="code" href="img_8h.html#a0d66ed136e5992b7b00ce6f43bad1439">IMG_TEST</a>) <a class="code" href="ecat63p_8c.html#a129d5f8c3d6135b9934cebc54d27bc47">ecat63PrintMainheader</a>(&amp;main_header, stdout);
<a name="l00985"></a>00985 
<a name="l00986"></a>00986   <span class="comment">/* Allocate memory for matrix data */</span>
<a name="l00987"></a>00987   sdata=(<span class="keywordtype">short</span> <span class="keywordtype">int</span>*)malloc(img-&gt;<a class="code" href="structIMG.html#a0818b82059710627a94282a793ff7030">dimx</a>*img-&gt;<a class="code" href="structIMG.html#aa17e87812503d3c142f31c08abcbf79d">dimy</a>*<span class="keyword">sizeof</span>(<span class="keywordtype">short</span> <span class="keywordtype">int</span>));
<a name="l00988"></a>00988   <span class="keywordflow">if</span>(sdata==NULL) {strcpy(<a class="code" href="ecat63_8h.html#a1a4fc8f123b2ef83d928b63743aa49d9">ecat63errmsg</a>, <span class="stringliteral">&quot;out of memory&quot;</span>); <span class="keywordflow">return</span>(4);}
<a name="l00989"></a>00989 
<a name="l00990"></a>00990   <span class="comment">/* Set the subheader contents, as far as possible */</span>
<a name="l00991"></a>00991   <span class="keywordflow">switch</span>(main_header.<a class="code" href="structecat63__mainheader.html#aeb7fd4a6b107a810dcff5d82b6f58440">file_type</a>) {
<a name="l00992"></a>00992     <span class="keywordflow">case</span> <a class="code" href="ecat63_8h.html#a7140d943b6f40ad3c4bdab5a2073c2f6">RAW_DATA</a>:
<a name="l00993"></a>00993       scan_header.<a class="code" href="structecat63__scanheader.html#ad1ee12caf8404e9237c9b14d95711109">data_type</a>=main_header.<a class="code" href="structecat63__mainheader.html#a727d6abe8019b32f33965c76ca19a9ee">data_type</a>;
<a name="l00994"></a>00994       scan_header.<a class="code" href="structecat63__scanheader.html#adee5ad20def49d6f13da7efde9da4e3e">dimension_1</a>=img-&gt;<a class="code" href="structIMG.html#a0818b82059710627a94282a793ff7030">dimx</a>;
<a name="l00995"></a>00995       scan_header.<a class="code" href="structecat63__scanheader.html#a87c12560397fa7408d95ad30d1800f92">dimension_2</a>=img-&gt;<a class="code" href="structIMG.html#aa17e87812503d3c142f31c08abcbf79d">dimy</a>;
<a name="l00996"></a>00996       scan_header.<a class="code" href="structecat63__scanheader.html#aaf23846f5c3ee43188d49fac0f592498">frame_duration_sec</a>=1;
<a name="l00997"></a>00997       scan_header.<a class="code" href="structecat63__scanheader.html#acfabab41eaa593a0625a43057bd9b558">scale_factor</a>=1.0;
<a name="l00998"></a>00998       scan_header.<a class="code" href="structecat63__scanheader.html#aa7214f91108a9d7a5bec6f0edbe3493d">frame_start_time</a>=0;
<a name="l00999"></a>00999       scan_header.<a class="code" href="structecat63__scanheader.html#a253426410960e4047acfb591c24e179b">frame_duration</a>=1000;
<a name="l01000"></a>01000       scan_header.<a class="code" href="structecat63__scanheader.html#a3077aca1fa9f9b64c57f4b6eb19780fb">loss_correction_fctr</a>=1.0;
<a name="l01001"></a>01001       scan_header.<a class="code" href="structecat63__scanheader.html#acb676ed22b052fbaa07bd044263ac279">sample_distance</a>=(img-&gt;<a class="code" href="structIMG.html#a399dae5b27dda8d5e1b0e96c885513e4">sampleDistance</a>)/10.0;
<a name="l01002"></a>01002       <span class="comment">/*if(IMG_TEST) ecat63PrintScanheader(&amp;scan_header);*/</span>
<a name="l01003"></a>01003       <span class="keywordflow">break</span>;
<a name="l01004"></a>01004     <span class="keywordflow">case</span> <a class="code" href="ecat63_8h.html#aaf5f1adfda44941c4bf4de3e71219e4a">IMAGE_DATA</a>:
<a name="l01005"></a>01005       image_header.<a class="code" href="structecat63__imageheader.html#a00da8baaaefa0ca83e0c12636b298196">data_type</a>=main_header.<a class="code" href="structecat63__mainheader.html#a727d6abe8019b32f33965c76ca19a9ee">data_type</a>;
<a name="l01006"></a>01006       image_header.<a class="code" href="structecat63__imageheader.html#a417f483d23efabd675ed72cdd4bbdb98">num_dimensions</a>=2;
<a name="l01007"></a>01007       image_header.<a class="code" href="structecat63__imageheader.html#a86aae28e4de4b65fa5de745aab0bf082">dimension_1</a>=img-&gt;<a class="code" href="structIMG.html#a0818b82059710627a94282a793ff7030">dimx</a>;
<a name="l01008"></a>01008       image_header.<a class="code" href="structecat63__imageheader.html#ad53dbc60f5f5a34b7327abbf0d609d5d">dimension_2</a>=img-&gt;<a class="code" href="structIMG.html#aa17e87812503d3c142f31c08abcbf79d">dimy</a>;
<a name="l01009"></a>01009       image_header.<a class="code" href="structecat63__imageheader.html#a9a0fd8c173273797330c7c67effdffd6">recon_scale</a>=img-&gt;<a class="code" href="structIMG.html#ab23da0c2295967727c6d33d0fbdc8c88">zoom</a>;
<a name="l01010"></a>01010       image_header.<a class="code" href="structecat63__imageheader.html#ac4ff92a4d0a9b55e3647bfb45af9d381">quant_scale</a>=1.0;
<a name="l01011"></a>01011       image_header.<a class="code" href="structecat63__imageheader.html#ac2b4f461866cfcbe8bf33939d461becc">slice_width</a>=img-&gt;<a class="code" href="structIMG.html#afc2a1d2417a8a3afe2c500173a05c472">sizez</a>/10.;
<a name="l01012"></a>01012       image_header.<a class="code" href="structecat63__imageheader.html#a749a7dfb6443194317be2260fc7b5b7b">pixel_size</a>=img-&gt;<a class="code" href="structIMG.html#a02cc239e917e7ebf85e34f21448ff080">sizex</a>/10.;
<a name="l01013"></a>01013       image_header.<a class="code" href="structecat63__imageheader.html#a14bdbc2c5ce62d9ed0c57514b02f8f0e">frame_start_time</a>=0;
<a name="l01014"></a>01014       image_header.<a class="code" href="structecat63__imageheader.html#ae4fba67f8fb4e7f72f4d74b215b39058">frame_duration</a>=1000;
<a name="l01015"></a>01015       image_header.<a class="code" href="structecat63__imageheader.html#a7c53b9df3c138cf5b9d5b2986d003377">plane_eff_corr_fctr</a>=1.0;
<a name="l01016"></a>01016       image_header.<a class="code" href="structecat63__imageheader.html#a46ec10bffd9ad4bd54271b68022bd41c">decay_corr_fctr</a>=0.0;
<a name="l01017"></a>01017       image_header.<a class="code" href="structecat63__imageheader.html#ab7fe2e08a8afa0b40c4fb9cf5a434ac1">loss_corr_fctr</a>=1.0;
<a name="l01018"></a>01018       image_header.<a class="code" href="structecat63__imageheader.html#aa50b6a76225241de1056e26de450fb1c">ecat_calibration_fctr</a>=1.0;
<a name="l01019"></a>01019       image_header.<a class="code" href="structecat63__imageheader.html#a6338eb4b7fdcb624ac0673260d16db42">well_counter_cal_fctr</a>=1.0;
<a name="l01020"></a>01020       image_header.<a class="code" href="structecat63__imageheader.html#a38136ac931d35627e8644ccc71d97aec">quant_units</a>=main_header.<a class="code" href="structecat63__mainheader.html#ad8b7b38c78851f5724f8e2095d850271">calibration_units</a>;
<a name="l01021"></a>01021       <span class="comment">/*if(IMG_TEST) ecat63PrintImageheader(&amp;image_header);*/</span>
<a name="l01022"></a>01022       <span class="keywordflow">break</span>;
<a name="l01023"></a>01023   }
<a name="l01024"></a>01024 
<a name="l01025"></a>01025   <span class="comment">/* Write one matrix at a time */</span>
<a name="l01026"></a>01026   n=0;
<a name="l01027"></a>01027   <span class="keywordflow">for</span>(plane=1; plane&lt;=img-&gt;<a class="code" href="structIMG.html#a9c04780b47e6a627a2b700b76352c3fc">dimz</a>; plane++) <span class="keywordflow">for</span>(frame=1; frame&lt;=img-&gt;<a class="code" href="structIMG.html#a77605d4aa64b86294590c79e9a761b15">dimt</a>; frame++) {
<a name="l01028"></a>01028     <span class="comment">/* Scale data to short ints */</span>
<a name="l01029"></a>01029     <span class="comment">/* Search min and max */</span>
<a name="l01030"></a>01030     fmin=fmax=f=img-&gt;<a class="code" href="structIMG.html#a43e2c98dc0728731601a76abd51bb935">m</a>[plane-1][0][0][frame-1];
<a name="l01031"></a>01031     <span class="keywordflow">for</span>(i=0; i&lt;img-&gt;<a class="code" href="structIMG.html#aa17e87812503d3c142f31c08abcbf79d">dimy</a>; i++) <span class="keywordflow">for</span>(j=0; j&lt;img-&gt;<a class="code" href="structIMG.html#a0818b82059710627a94282a793ff7030">dimx</a>; j++) {
<a name="l01032"></a>01032       f=img-&gt;<a class="code" href="structIMG.html#a43e2c98dc0728731601a76abd51bb935">m</a>[plane-1][i][j][frame-1];
<a name="l01033"></a>01033       <span class="keywordflow">if</span>(f&gt;fmax) fmax=f; <span class="keywordflow">else</span> <span class="keywordflow">if</span>(f&lt;fmin) fmin=f;
<a name="l01034"></a>01034     }
<a name="l01035"></a>01035     <span class="comment">/* Calculate scaling factor */</span>
<a name="l01036"></a>01036     <span class="keywordflow">if</span>(fabs(fmin)&gt;fabs(fmax)) g=fabs(fmin); <span class="keywordflow">else</span> g=fabs(fmax);
<a name="l01037"></a>01037     <span class="keywordflow">if</span>(g!=0) scale=32766./g; <span class="keywordflow">else</span> scale=1.0;
<a name="l01038"></a>01038     <span class="comment">/*printf(&quot;fmin=%e fmax=%e g=%e scale=%e\n&quot;, fmin, fmax, g, scale);*/</span>
<a name="l01039"></a>01039     <span class="comment">/* Scale matrix data to shorts */</span>
<a name="l01040"></a>01040     sptr=sdata;
<a name="l01041"></a>01041     <span class="keywordflow">for</span>(i=0; i&lt;img-&gt;<a class="code" href="structIMG.html#aa17e87812503d3c142f31c08abcbf79d">dimy</a>; i++) <span class="keywordflow">for</span>(j=0; j&lt;img-&gt;<a class="code" href="structIMG.html#a0818b82059710627a94282a793ff7030">dimx</a>; j++) {
<a name="l01042"></a>01042       *sptr=(<span class="keywordtype">short</span> int)temp_roundf(scale*img-&gt;<a class="code" href="structIMG.html#a43e2c98dc0728731601a76abd51bb935">m</a>[plane-1][i][j][frame-1]);
<a name="l01043"></a>01043       sptr++;
<a name="l01044"></a>01044     }
<a name="l01045"></a>01045     <span class="comment">/* Calculate and set subheader min&amp;max and scale */</span>
<a name="l01046"></a>01046     smin=(<span class="keywordtype">short</span> int)temp_roundf(scale*fmin); smax=(<span class="keywordtype">short</span> int)temp_roundf(scale*fmax);
<a name="l01047"></a>01047     <span class="keywordflow">if</span>(main_header.<a class="code" href="structecat63__mainheader.html#aeb7fd4a6b107a810dcff5d82b6f58440">file_type</a>==<a class="code" href="ecat63_8h.html#a7140d943b6f40ad3c4bdab5a2073c2f6">RAW_DATA</a>) {
<a name="l01048"></a>01048       scan_header.<a class="code" href="structecat63__scanheader.html#abeeb6fea3c31b83464be7afcdff37219">scan_min</a>=smin; scan_header.<a class="code" href="structecat63__scanheader.html#a87fc09622afe7e2372588f650e7e6afd">scan_max</a>=smax;
<a name="l01049"></a>01049       scan_header.<a class="code" href="structecat63__scanheader.html#acfabab41eaa593a0625a43057bd9b558">scale_factor</a>=1.0/scale;
<a name="l01050"></a>01050       scan_header.<a class="code" href="structecat63__scanheader.html#aa7214f91108a9d7a5bec6f0edbe3493d">frame_start_time</a>=(int)temp_roundf(1000.*img-&gt;<a class="code" href="structIMG.html#a8ff22fc209b6f44ad14341c8644788d2">start</a>[frame-1]);
<a name="l01051"></a>01051       scan_header.<a class="code" href="structecat63__scanheader.html#a253426410960e4047acfb591c24e179b">frame_duration</a>=
<a name="l01052"></a>01052         (int)temp_roundf(1000.*(img-&gt;<a class="code" href="structIMG.html#aa2b629a51ca62bcafad0a66d32e1ca8b">end</a>[frame-1]-img-&gt;<a class="code" href="structIMG.html#a8ff22fc209b6f44ad14341c8644788d2">start</a>[frame-1]));
<a name="l01053"></a>01053       scan_header.<a class="code" href="structecat63__scanheader.html#a28b007d345ada719bb886fd7a2683d76">prompts</a>=temp_roundf(img-&gt;<a class="code" href="structIMG.html#a76d63a001b8569d9f80ccb325e064be1">prompts</a>[frame-1]);
<a name="l01054"></a>01054       scan_header.<a class="code" href="structecat63__scanheader.html#ad0a2468779aec56e8d45ca685834eb16">delayed</a>=temp_roundf(img-&gt;<a class="code" href="structIMG.html#ae47ebbbdc0c308f473fec801a2df513d">randoms</a>[frame-1]);
<a name="l01055"></a>01055     } <span class="keywordflow">else</span> <span class="keywordflow">if</span>(main_header.<a class="code" href="structecat63__mainheader.html#aeb7fd4a6b107a810dcff5d82b6f58440">file_type</a>==<a class="code" href="ecat63_8h.html#aaf5f1adfda44941c4bf4de3e71219e4a">IMAGE_DATA</a>) {
<a name="l01056"></a>01056       image_header.<a class="code" href="structecat63__imageheader.html#ad9ae22f6f465f3872ad5dbc66f0a171b">image_min</a>=smin; image_header.<a class="code" href="structecat63__imageheader.html#a7020d45c4b35dd0c72ce4b87028ed9b9">image_max</a>=smax;
<a name="l01057"></a>01057       image_header.<a class="code" href="structecat63__imageheader.html#ac4ff92a4d0a9b55e3647bfb45af9d381">quant_scale</a>=1.0/scale;
<a name="l01058"></a>01058       image_header.<a class="code" href="structecat63__imageheader.html#a14bdbc2c5ce62d9ed0c57514b02f8f0e">frame_start_time</a>=(int)temp_roundf(1000.*img-&gt;<a class="code" href="structIMG.html#a8ff22fc209b6f44ad14341c8644788d2">start</a>[frame-1]);
<a name="l01059"></a>01059       image_header.<a class="code" href="structecat63__imageheader.html#ae4fba67f8fb4e7f72f4d74b215b39058">frame_duration</a>=
<a name="l01060"></a>01060         (int)temp_roundf(1000.*(img-&gt;<a class="code" href="structIMG.html#aa2b629a51ca62bcafad0a66d32e1ca8b">end</a>[frame-1]-img-&gt;<a class="code" href="structIMG.html#a8ff22fc209b6f44ad14341c8644788d2">start</a>[frame-1]));
<a name="l01061"></a>01061       <span class="comment">/* Set decay correction factor */</span>
<a name="l01062"></a>01062       <span class="keywordflow">if</span>(img-&gt;<a class="code" href="structIMG.html#a6ce801dea67ec8224e8cfc9aebb8a909">decayCorrected</a>)
<a name="l01063"></a>01063         image_header.<a class="code" href="structecat63__imageheader.html#a46ec10bffd9ad4bd54271b68022bd41c">decay_corr_fctr</a>=img-&gt;<a class="code" href="structIMG.html#abf0ad6e681d08c3248dbd9837afa9973">decayCorrFactor</a>[frame-1];
<a name="l01064"></a>01064     } 
<a name="l01065"></a>01065     <span class="comment">/* Write matrix data */</span>
<a name="l01066"></a>01066     m=<a class="code" href="ecat63ml_8c.html#a7561756da60d9e38a1419da8ebf220fb">mat_numcod</a>(frame, img-&gt;<a class="code" href="structIMG.html#a78e3164d578cf4a570e930dceb10fb51">planeNumber</a>[plane-1], 1, 0, 0);
<a name="l01067"></a>01067     sptr=sdata;
<a name="l01068"></a>01068     <span class="keywordflow">if</span>(<a class="code" href="img_8h.html#a0d66ed136e5992b7b00ce6f43bad1439">IMG_TEST</a>) printf(<span class="stringliteral">&quot;  writing matnum=%d\n&quot;</span>, m);
<a name="l01069"></a>01069     <span class="keywordflow">if</span>(main_header.<a class="code" href="structecat63__mainheader.html#aeb7fd4a6b107a810dcff5d82b6f58440">file_type</a>==<a class="code" href="ecat63_8h.html#a7140d943b6f40ad3c4bdab5a2073c2f6">RAW_DATA</a>) {
<a name="l01070"></a>01070       <span class="comment">/*if(IMG_TEST) ecat63PrintScanheader(&amp;scan_header);*/</span>
<a name="l01071"></a>01071       ret=<a class="code" href="ecat63w_8c.html#a0ef3ec20d54221eb1730dd531724b378">ecat63WriteScan</a>(fp, m, &amp;scan_header, sptr);
<a name="l01072"></a>01072     } <span class="keywordflow">else</span> <span class="keywordflow">if</span>(main_header.<a class="code" href="structecat63__mainheader.html#aeb7fd4a6b107a810dcff5d82b6f58440">file_type</a>==<a class="code" href="ecat63_8h.html#aaf5f1adfda44941c4bf4de3e71219e4a">IMAGE_DATA</a>) {
<a name="l01073"></a>01073       <span class="comment">/*if(IMG_TEST) ecat63PrintImageheader(&amp;image_header);*/</span>
<a name="l01074"></a>01074       ret=<a class="code" href="ecat63w_8c.html#ab7e9bf33b3225d1260ad04c44ce817ab">ecat63WriteImage</a>(fp, m, &amp;image_header, sptr);
<a name="l01075"></a>01075     }
<a name="l01076"></a>01076     <span class="keywordflow">if</span>(ret) {
<a name="l01077"></a>01077       sprintf(<a class="code" href="ecat63_8h.html#a1a4fc8f123b2ef83d928b63743aa49d9">ecat63errmsg</a>, <span class="stringliteral">&quot;cannot write data on pl%02d fr%02d (%d).&quot;</span>,
<a name="l01078"></a>01078         plane, frame, ret);
<a name="l01079"></a>01079       fclose(fp); <span class="keyword">remove</span>(fname); free(sdata);
<a name="l01080"></a>01080       <span class="keywordflow">return</span>(9);
<a name="l01081"></a>01081     }
<a name="l01082"></a>01082     n++;
<a name="l01083"></a>01083   } <span class="comment">/* next matrix */</span>
<a name="l01084"></a>01084   <span class="keywordflow">if</span>(<a class="code" href="img_8h.html#a0d66ed136e5992b7b00ce6f43bad1439">IMG_TEST</a>) printf(<span class="stringliteral">&quot;  %d matrices written in %s\n&quot;</span>, n, fname);
<a name="l01085"></a>01085 
<a name="l01086"></a>01086   <span class="comment">/* Free matrix memory */</span>
<a name="l01087"></a>01087   free(sdata);
<a name="l01088"></a>01088 
<a name="l01089"></a>01089   <span class="comment">/* If matrices were added, set main header */</span>
<a name="l01090"></a>01090   <span class="keywordflow">if</span>(add==1) {
<a name="l01091"></a>01091     fflush(fp);
<a name="l01092"></a>01092     <span class="comment">/* Read matrix list */</span>
<a name="l01093"></a>01093     <a class="code" href="ecat63ml_8c.html#a2477fe69c32ce33b443b9c0eaedae423">ecat63InitMatlist</a>(&amp;mlist);
<a name="l01094"></a>01094     ret=<a class="code" href="ecat63ml_8c.html#a6cce9d0e541e82d56c9d162f16202179">ecat63ReadMatlist</a>(fp, &amp;mlist);
<a name="l01095"></a>01095     <span class="keywordflow">if</span>(ret) {
<a name="l01096"></a>01096       sprintf(<a class="code" href="ecat63_8h.html#a1a4fc8f123b2ef83d928b63743aa49d9">ecat63errmsg</a>, <span class="stringliteral">&quot;cannot read matrix list (%d)&quot;</span>, ret);
<a name="l01097"></a>01097       fclose(fp); <span class="keywordflow">return</span>(21);
<a name="l01098"></a>01098     }
<a name="l01099"></a>01099     <span class="keywordflow">if</span>(mlist.<a class="code" href="structMATRIXLIST.html#a7fcfb983a42851d8562084ddde1f9fcd">matrixNr</a>&lt;=0) {
<a name="l01100"></a>01100       strcpy(<a class="code" href="ecat63_8h.html#a1a4fc8f123b2ef83d928b63743aa49d9">ecat63errmsg</a>, <span class="stringliteral">&quot;matrix list is empty&quot;</span>); fclose(fp); <span class="keywordflow">return</span>(21);}
<a name="l01101"></a>01101     <span class="comment">/* Sort matrix list */</span>
<a name="l01102"></a>01102     <span class="keywordflow">for</span>(i=0; i&lt;mlist.<a class="code" href="structMATRIXLIST.html#a7fcfb983a42851d8562084ddde1f9fcd">matrixNr</a>-1; i++) <span class="keywordflow">for</span>(j=i+1; j&lt;mlist.<a class="code" href="structMATRIXLIST.html#a7fcfb983a42851d8562084ddde1f9fcd">matrixNr</a>; j++) {
<a name="l01103"></a>01103       <span class="keywordflow">if</span>(mlist.<a class="code" href="structMATRIXLIST.html#a42676745379d69392b07b5c29626f6f9">matdir</a>[i].<a class="code" href="structMatDir.html#aeb0291ec1f5ac237c1e587ed3d23b1bb">matnum</a>&gt;mlist.<a class="code" href="structMATRIXLIST.html#a42676745379d69392b07b5c29626f6f9">matdir</a>[j].<a class="code" href="structMatDir.html#aeb0291ec1f5ac237c1e587ed3d23b1bb">matnum</a>) {
<a name="l01104"></a>01104         tmpMatdir=mlist.<a class="code" href="structMATRIXLIST.html#a42676745379d69392b07b5c29626f6f9">matdir</a>[i];
<a name="l01105"></a>01105         mlist.<a class="code" href="structMATRIXLIST.html#a42676745379d69392b07b5c29626f6f9">matdir</a>[i]=mlist.<a class="code" href="structMATRIXLIST.html#a42676745379d69392b07b5c29626f6f9">matdir</a>[j]; mlist.<a class="code" href="structMATRIXLIST.html#a42676745379d69392b07b5c29626f6f9">matdir</a>[j]=tmpMatdir;
<a name="l01106"></a>01106       }
<a name="l01107"></a>01107     }
<a name="l01108"></a>01108     <span class="comment">/* Calculate the number of planes and frames */</span>
<a name="l01109"></a>01109     prev_plane=plane=-1; prev_frame=frame=-1; frameNr=planeNr=0;
<a name="l01110"></a>01110     <span class="keywordflow">for</span>(m=0; m&lt;mlist.<a class="code" href="structMATRIXLIST.html#a7fcfb983a42851d8562084ddde1f9fcd">matrixNr</a>; m++) {
<a name="l01111"></a>01111       <a class="code" href="ecat63ml_8c.html#af566384e63f743897f71d8ee41b3b292">mat_numdoc</a>(mlist.<a class="code" href="structMATRIXLIST.html#a42676745379d69392b07b5c29626f6f9">matdir</a>[m].<a class="code" href="structMatDir.html#aeb0291ec1f5ac237c1e587ed3d23b1bb">matnum</a>, &amp;matval);
<a name="l01112"></a>01112       plane=matval.<a class="code" href="structMatval.html#ac87d088d281d918936f987cd19148069">plane</a>; frame=matval.<a class="code" href="structMatval.html#a514081d81e26c20a377de4e945499446">frame</a>;
<a name="l01113"></a>01113       <span class="keywordflow">if</span>(plane!=prev_plane) {frameNr=1; planeNr++;} <span class="keywordflow">else</span> {frameNr++;}
<a name="l01114"></a>01114       prev_plane=plane; prev_frame=frame;
<a name="l01115"></a>01115     } <span class="comment">/* next matrix */</span>
<a name="l01116"></a>01116     <a class="code" href="ecat63ml_8c.html#a2d931d7e3d4e21159731b7c480c209b9">ecat63EmptyMatlist</a>(&amp;mlist);
<a name="l01117"></a>01117     main_header.<a class="code" href="structecat63__mainheader.html#aec1a2e31ad9fa2e9d03220565bc3cfa0">num_planes</a>=planeNr; main_header.<a class="code" href="structecat63__mainheader.html#a01ad1f4be366fb3ad82da61022e9761c">num_frames</a>=frameNr;
<a name="l01118"></a>01118     <span class="comment">/* Write main header */</span>
<a name="l01119"></a>01119     ret=<a class="code" href="ecat63w_8c.html#af7389948dcb81fe5984b5ece280e9267">ecat63WriteMainheader</a>(fp, &amp;main_header);
<a name="l01120"></a>01120     <span class="keywordflow">if</span>(ret) {
<a name="l01121"></a>01121       sprintf(<a class="code" href="ecat63_8h.html#a1a4fc8f123b2ef83d928b63743aa49d9">ecat63errmsg</a>, <span class="stringliteral">&quot;cannot write mainheader (%d)&quot;</span>, ret);
<a name="l01122"></a>01122       fclose(fp); <span class="keywordflow">return</span>(22);
<a name="l01123"></a>01123     }
<a name="l01124"></a>01124   }
<a name="l01125"></a>01125 
<a name="l01126"></a>01126   <span class="comment">/* Close file and free memory */</span>
<a name="l01127"></a>01127   fclose(fp);
<a name="l01128"></a>01128 
<a name="l01129"></a>01129   <span class="keywordflow">return</span>(0);
<a name="l01130"></a>01130 }
<a name="l01131"></a>01131 <span class="comment">/*****************************************************************************/</span>
<a name="l01132"></a>01132 
<a name="l01133"></a>01133 <span class="comment">/*****************************************************************************/</span>
<a name="l01140"></a><a class="code" href="imgfile_8h.html#a40e3f729d9bd35fdd7aaa4628071db33">01140</a> <span class="keywordtype">int</span> <a class="code" href="img__e63_8c.html#a40e3f729d9bd35fdd7aaa4628071db33">imgEcat63Supported</a>(<a class="code" href="structecat63__mainheader.html">ECAT63_mainheader</a> *h) {
<a name="l01141"></a>01141   <span class="keywordflow">if</span>(h==NULL) <span class="keywordflow">return</span>(0);
<a name="l01142"></a>01142   <span class="keywordflow">if</span>(h-&gt;<a class="code" href="structecat63__mainheader.html#aeb7fd4a6b107a810dcff5d82b6f58440">file_type</a>==<a class="code" href="ecat63_8h.html#aaf5f1adfda44941c4bf4de3e71219e4a">IMAGE_DATA</a>) <span class="keywordflow">return</span>(1);
<a name="l01143"></a>01143   <span class="keywordflow">if</span>(h-&gt;<a class="code" href="structecat63__mainheader.html#aeb7fd4a6b107a810dcff5d82b6f58440">file_type</a>==<a class="code" href="ecat63_8h.html#a7140d943b6f40ad3c4bdab5a2073c2f6">RAW_DATA</a>)   <span class="keywordflow">return</span>(1);
<a name="l01144"></a>01144   <span class="keywordflow">if</span>(h-&gt;<a class="code" href="structecat63__mainheader.html#aeb7fd4a6b107a810dcff5d82b6f58440">file_type</a>==<a class="code" href="ecat63_8h.html#a23271440af335f92b16c81abdff7818a">ATTN_DATA</a>)  <span class="keywordflow">return</span>(1);
<a name="l01145"></a>01145   <span class="keywordflow">if</span>(h-&gt;<a class="code" href="structecat63__mainheader.html#aeb7fd4a6b107a810dcff5d82b6f58440">file_type</a>==<a class="code" href="ecat63_8h.html#a978e691d4d6416577705c5c654096e02">NORM_DATA</a>)  <span class="keywordflow">return</span>(1);
<a name="l01146"></a>01146   <span class="keywordflow">return</span>(0);
<a name="l01147"></a>01147 }
<a name="l01148"></a>01148 <span class="comment">/*****************************************************************************/</span>
<a name="l01149"></a>01149 
<a name="l01150"></a>01150 <span class="comment">/*****************************************************************************/</span>
<a name="l01157"></a><a class="code" href="imgfile_8h.html#ad140be5ae9976dfa2abbbe973517451d">01157</a> <span class="keywordtype">void</span> <a class="code" href="img__e63_8c.html#ad140be5ae9976dfa2abbbe973517451d">imgGetEcat63MHeader</a>(<a class="code" href="structIMG.html">IMG</a> *img, <a class="code" href="structecat63__mainheader.html">ECAT63_mainheader</a> *h) {
<a name="l01158"></a>01158   <span class="keyword">struct </span>tm scanStart;
<a name="l01159"></a>01159 
<a name="l01160"></a>01160   img-&gt;<a class="code" href="structIMG.html#a780bf2ffdee9e977a3a51febb7696701">_dataType</a>=h-&gt;<a class="code" href="structecat63__mainheader.html#a727d6abe8019b32f33965c76ca19a9ee">data_type</a>; <span class="comment">/* again in subheaders*/</span>
<a name="l01161"></a>01161   <span class="comment">/* For saving IMG data, only 2-byte VAX data types are allowed, so change it now */</span>
<a name="l01162"></a>01162   <span class="keywordflow">if</span>(img-&gt;<a class="code" href="structIMG.html#a780bf2ffdee9e977a3a51febb7696701">_dataType</a>==<a class="code" href="ecat63_8h.html#a91402eabd36b6383a537f5ba993e1d13">VAX_I4</a> || img-&gt;<a class="code" href="structIMG.html#a780bf2ffdee9e977a3a51febb7696701">_dataType</a>==<a class="code" href="ecat63_8h.html#a43d671e0f827418673872adcd63418c4">VAX_R4</a>) img-&gt;<a class="code" href="structIMG.html#a780bf2ffdee9e977a3a51febb7696701">_dataType</a>=<a class="code" href="ecat63_8h.html#ab6ed0aaf03f063c606604089878ed91a">VAX_I2</a>;
<a name="l01163"></a>01163   img-&gt;<a class="code" href="structIMG.html#a7f83c746c35583a9fa323b94d7ea5fb5">scanner</a>=h-&gt;<a class="code" href="structecat63__mainheader.html#a90a0ac55f8a40ddcf53446ee30e2aa7a">system_type</a>;
<a name="l01164"></a>01164   strncpy(img-&gt;<a class="code" href="structIMG.html#ab8bcc846c896a26e5aac045b118fd5cf">radiopharmaceutical</a>, h-&gt;<a class="code" href="structecat63__mainheader.html#a51129743a09356f7b83e11fa0865d17d">radiopharmaceutical</a>, 32);
<a name="l01165"></a>01165   img-&gt;<a class="code" href="structIMG.html#ac9c048a9dc8205b22518b05486d8030b">isotopeHalflife</a>=h-&gt;<a class="code" href="structecat63__mainheader.html#aa80e2c3fda2047135338e9525b48fb17">isotope_halflife</a>;
<a name="l01166"></a>01166   {
<a name="l01167"></a>01167   memset(&amp;scanStart, 0, <span class="keyword">sizeof</span>(<span class="keyword">struct</span> tm));
<a name="l01168"></a>01168   scanStart.tm_year=h-&gt;<a class="code" href="structecat63__mainheader.html#ac50ce9695fe8b410dc42d611a9c3bff7">scan_start_year</a>-1900;
<a name="l01169"></a>01169   scanStart.tm_mon=h-&gt;<a class="code" href="structecat63__mainheader.html#accef159de133ceecb8712a22b9aaa261">scan_start_month</a>-1;
<a name="l01170"></a>01170   scanStart.tm_mday=h-&gt;<a class="code" href="structecat63__mainheader.html#a2d2676e349d9446fba65f1185b22b6c9">scan_start_day</a>; scanStart.tm_yday=0;
<a name="l01171"></a>01171   scanStart.tm_hour=h-&gt;<a class="code" href="structecat63__mainheader.html#a1f67ed153d99b8f1e5edf24850312275">scan_start_hour</a>;
<a name="l01172"></a>01172   scanStart.tm_min=h-&gt;<a class="code" href="structecat63__mainheader.html#a152db2ee622ee372c1a0691ef9eea5a5">scan_start_minute</a>;
<a name="l01173"></a>01173   scanStart.tm_sec=h-&gt;<a class="code" href="structecat63__mainheader.html#ae5de61076a9b1bfd13c22bea60c6b933">scan_start_second</a>;
<a name="l01174"></a>01174   scanStart.tm_isdst=-1;
<a name="l01175"></a>01175   img-&gt;<a class="code" href="structIMG.html#a5db78f8b423fc42b80bba42e27c7b2c3">scanStart</a>=mktime(&amp;scanStart); <span class="keywordflow">if</span>(img-&gt;<a class="code" href="structIMG.html#a5db78f8b423fc42b80bba42e27c7b2c3">scanStart</a>==-1) img-&gt;<a class="code" href="structIMG.html#a5db78f8b423fc42b80bba42e27c7b2c3">scanStart</a>=0;
<a name="l01176"></a>01176   }
<a name="l01177"></a>01177   img-&gt;<a class="code" href="structIMG.html#af1d9f4bd7d58988eb4aa9f660a244a64">axialFOV</a>=10.0*h-&gt;<a class="code" href="structecat63__mainheader.html#acfb971c6cfaffd74900fb23da894bef2">axial_fov</a>;
<a name="l01178"></a>01178   img-&gt;<a class="code" href="structIMG.html#a4a03c16266c7e7dcd6858aca05e7599f">transaxialFOV</a>=10.0*h-&gt;<a class="code" href="structecat63__mainheader.html#a3545e9b7344313ca3f5c0e9f817d1fc4">transaxial_fov</a>;
<a name="l01179"></a>01179   strncpy(img-&gt;<a class="code" href="structIMG.html#ad76f79021c93175ec98839613ba4dcd2">studyNr</a>, h-&gt;<a class="code" href="structecat63__mainheader.html#ae42d92d4f2b85a68511f266f7cddfc8c">study_name</a>, MAX_STUDYNR_LEN);
<a name="l01180"></a>01180   strncpy(img-&gt;<a class="code" href="structIMG.html#a29013e391052918bd5aa6974eeec811d">patientName</a>, h-&gt;<a class="code" href="structecat63__mainheader.html#a7c66591db9e9dd727d6707ea1051df88">patient_name</a>, 31);
<a name="l01181"></a>01181   strncpy(img-&gt;<a class="code" href="structIMG.html#a7dc9c21dbaf6b609a32e54c708e089c1">patientID</a>, h-&gt;<a class="code" href="structecat63__mainheader.html#ac0ca7836b26f3bcc824110278ecb6508">patient_id</a>, 15);
<a name="l01182"></a>01182   img-&gt;<a class="code" href="structIMG.html#afc2a1d2417a8a3afe2c500173a05c472">sizez</a>=10.0*h-&gt;<a class="code" href="structecat63__mainheader.html#afa9b56b592ebcc6a0c8a499c7b74562a">plane_separation</a>;
<a name="l01183"></a>01183   <span class="keywordflow">switch</span>(h-&gt;<a class="code" href="structecat63__mainheader.html#aeb7fd4a6b107a810dcff5d82b6f58440">file_type</a>) {
<a name="l01184"></a>01184     <span class="keywordflow">case</span> <a class="code" href="ecat63_8h.html#aaf5f1adfda44941c4bf4de3e71219e4a">IMAGE_DATA</a>: img-&gt;<a class="code" href="structIMG.html#a0d9199e1c3c4bd94d56eb30e421b309c">type</a>=<a class="code" href="img_8h.html#ae8b5bb16b84adcbcd2bba3e10a36d62d">IMG_TYPE_IMAGE</a>; <span class="keywordflow">break</span>;
<a name="l01185"></a>01185     <span class="keywordflow">case</span> <a class="code" href="ecat63_8h.html#a7140d943b6f40ad3c4bdab5a2073c2f6">RAW_DATA</a>:
<a name="l01186"></a>01186     <span class="keywordflow">case</span> <a class="code" href="ecat63_8h.html#a23271440af335f92b16c81abdff7818a">ATTN_DATA</a>:
<a name="l01187"></a>01187     <span class="keywordflow">case</span> <a class="code" href="ecat63_8h.html#a978e691d4d6416577705c5c654096e02">NORM_DATA</a>: 
<a name="l01188"></a>01188     <span class="keywordflow">default</span>: img-&gt;<a class="code" href="structIMG.html#a0d9199e1c3c4bd94d56eb30e421b309c">type</a>=<a class="code" href="img_8h.html#a04e835f7aec92fcc1d4ecf37e0dd2e9c">IMG_TYPE_RAW</a>;
<a name="l01189"></a>01189   }
<a name="l01190"></a>01190   strncpy(img-&gt;<a class="code" href="structIMG.html#a3651200fbb19796a635502a7b7d2c2c3">studyDescription</a>, h-&gt;<a class="code" href="structecat63__mainheader.html#a6322ecb4779f20b48b19360b605127e7">study_description</a>, 32);
<a name="l01191"></a>01191   strncpy(img-&gt;<a class="code" href="structIMG.html#a7743f4bab187593657c7bd4b7e99fe32">userProcessCode</a>, h-&gt;<a class="code" href="structecat63__mainheader.html#aeae1e01c587128f945503d87cb6d3ada">user_process_code</a>, 10);
<a name="l01192"></a>01192   img-&gt;<a class="code" href="structIMG.html#a7743f4bab187593657c7bd4b7e99fe32">userProcessCode</a>[10]=(char)0;
<a name="l01193"></a>01193   <span class="comment">/* If valid study number is found in user_process_code, then take it */</span>  
<a name="l01194"></a>01194   <span class="keywordflow">if</span>(!img-&gt;<a class="code" href="structIMG.html#ad76f79021c93175ec98839613ba4dcd2">studyNr</a>[0] &amp;&amp; studynr_validity_check(img-&gt;<a class="code" href="structIMG.html#a7743f4bab187593657c7bd4b7e99fe32">userProcessCode</a>))
<a name="l01195"></a>01195     strcpy(img-&gt;<a class="code" href="structIMG.html#ad76f79021c93175ec98839613ba4dcd2">studyNr</a>, img-&gt;<a class="code" href="structIMG.html#a7743f4bab187593657c7bd4b7e99fe32">userProcessCode</a>);
<a name="l01196"></a>01196   <span class="comment">/* Set calibration unit (this may have to be read from subheader later) */</span>
<a name="l01197"></a>01197   <a class="code" href="imgunit_8c.html#a99853914e3480ab82c7163b0612e8b28">imgUnitFromEcat</a>(img, h-&gt;<a class="code" href="structecat63__mainheader.html#ad8b7b38c78851f5724f8e2095d850271">calibration_units</a>);
<a name="l01198"></a>01198 }
<a name="l01199"></a>01199 <span class="comment">/*****************************************************************************/</span>
<a name="l01200"></a>01200 
<a name="l01201"></a>01201 <span class="comment">/*****************************************************************************/</span>
<a name="l01208"></a><a class="code" href="imgfile_8h.html#aea4f0eef296e7375e00c5695cfa2ecb3">01208</a> <span class="keywordtype">void</span> <a class="code" href="img__e63_8c.html#aea4f0eef296e7375e00c5695cfa2ecb3">imgSetEcat63MHeader</a>(<a class="code" href="structIMG.html">IMG</a> *img, <a class="code" href="structecat63__mainheader.html">ECAT63_mainheader</a> *h) {
<a name="l01209"></a>01209   <span class="keyword">struct </span>tm *scanStart;
<a name="l01210"></a>01210 
<a name="l01211"></a>01211   h-&gt;<a class="code" href="structecat63__mainheader.html#a433a5fddd8c83644a9f081001815c6e6">sw_version</a>=2;
<a name="l01212"></a>01212   h-&gt;<a class="code" href="structecat63__mainheader.html#aec1a2e31ad9fa2e9d03220565bc3cfa0">num_planes</a>=img-&gt;<a class="code" href="structIMG.html#a9c04780b47e6a627a2b700b76352c3fc">dimz</a>;  
<a name="l01213"></a>01213   h-&gt;<a class="code" href="structecat63__mainheader.html#a01ad1f4be366fb3ad82da61022e9761c">num_frames</a>=img-&gt;<a class="code" href="structIMG.html#a77605d4aa64b86294590c79e9a761b15">dimt</a>;  
<a name="l01214"></a>01214   h-&gt;<a class="code" href="structecat63__mainheader.html#a5038021b6504d93e304931a95af64746">num_gates</a>=1;
<a name="l01215"></a>01215   h-&gt;<a class="code" href="structecat63__mainheader.html#ad8cbcc286f61bd37eb2a6f196b88a4bb">num_bed_pos</a>=1;
<a name="l01216"></a>01216   <span class="keywordflow">if</span>(img-&gt;<a class="code" href="structIMG.html#a0d9199e1c3c4bd94d56eb30e421b309c">type</a>==<a class="code" href="img_8h.html#ae8b5bb16b84adcbcd2bba3e10a36d62d">IMG_TYPE_IMAGE</a>) h-&gt;<a class="code" href="structecat63__mainheader.html#aeb7fd4a6b107a810dcff5d82b6f58440">file_type</a>=<a class="code" href="ecat63_8h.html#aaf5f1adfda44941c4bf4de3e71219e4a">IMAGE_DATA</a>;
<a name="l01217"></a>01217   <span class="keywordflow">else</span> h-&gt;<a class="code" href="structecat63__mainheader.html#aeb7fd4a6b107a810dcff5d82b6f58440">file_type</a>=<a class="code" href="ecat63_8h.html#a7140d943b6f40ad3c4bdab5a2073c2f6">RAW_DATA</a>;
<a name="l01218"></a>01218   h-&gt;<a class="code" href="structecat63__mainheader.html#a727d6abe8019b32f33965c76ca19a9ee">data_type</a>=<a class="code" href="ecat63_8h.html#ab6ed0aaf03f063c606604089878ed91a">VAX_I2</a>;
<a name="l01219"></a>01219   <span class="keywordflow">if</span>(img-&gt;<a class="code" href="structIMG.html#a7f83c746c35583a9fa323b94d7ea5fb5">scanner</a>&gt;0) h-&gt;<a class="code" href="structecat63__mainheader.html#a90a0ac55f8a40ddcf53446ee30e2aa7a">system_type</a>=img-&gt;<a class="code" href="structIMG.html#a7f83c746c35583a9fa323b94d7ea5fb5">scanner</a>;
<a name="l01220"></a>01220   <span class="keywordflow">else</span> h-&gt;<a class="code" href="structecat63__mainheader.html#a90a0ac55f8a40ddcf53446ee30e2aa7a">system_type</a>=<a class="code" href="ecat63_8h.html#a4aad8bedf2b4765e35f5933a7c6b8558">ECAT63_SYSTEM_TYPE_DEFAULT</a>;
<a name="l01221"></a>01221   h-&gt;<a class="code" href="structecat63__mainheader.html#ab8dd149fc8b61f8ccd115799e419f7e1">calibration_factor</a>=1.0;
<a name="l01222"></a>01222   h-&gt;<a class="code" href="structecat63__mainheader.html#acfb971c6cfaffd74900fb23da894bef2">axial_fov</a>=img-&gt;<a class="code" href="structIMG.html#af1d9f4bd7d58988eb4aa9f660a244a64">axialFOV</a>/10.0;
<a name="l01223"></a>01223   h-&gt;<a class="code" href="structecat63__mainheader.html#a3545e9b7344313ca3f5c0e9f817d1fc4">transaxial_fov</a>=img-&gt;<a class="code" href="structIMG.html#a4a03c16266c7e7dcd6858aca05e7599f">transaxialFOV</a>/10.0;
<a name="l01224"></a>01224   h-&gt;<a class="code" href="structecat63__mainheader.html#afa9b56b592ebcc6a0c8a499c7b74562a">plane_separation</a>=img-&gt;<a class="code" href="structIMG.html#afc2a1d2417a8a3afe2c500173a05c472">sizez</a>/10.0;
<a name="l01225"></a>01225   h-&gt;<a class="code" href="structecat63__mainheader.html#ad8b7b38c78851f5724f8e2095d850271">calibration_units</a>=<a class="code" href="imgunit_8c.html#a0d8d16b27eaefdf56d32b5c4c51f3757">imgUnitToEcat6</a>(img);
<a name="l01226"></a>01226   strncpy(h-&gt;<a class="code" href="structecat63__mainheader.html#a51129743a09356f7b83e11fa0865d17d">radiopharmaceutical</a>, img-&gt;<a class="code" href="structIMG.html#ab8bcc846c896a26e5aac045b118fd5cf">radiopharmaceutical</a>, 32);
<a name="l01227"></a>01227   scanStart=localtime(&amp;img-&gt;<a class="code" href="structIMG.html#a5db78f8b423fc42b80bba42e27c7b2c3">scanStart</a>);
<a name="l01228"></a>01228   <span class="keywordflow">if</span>(scanStart!=NULL) {
<a name="l01229"></a>01229     h-&gt;<a class="code" href="structecat63__mainheader.html#ac50ce9695fe8b410dc42d611a9c3bff7">scan_start_year</a>=scanStart-&gt;tm_year+1900;
<a name="l01230"></a>01230     h-&gt;<a class="code" href="structecat63__mainheader.html#accef159de133ceecb8712a22b9aaa261">scan_start_month</a>=scanStart-&gt;tm_mon+1;
<a name="l01231"></a>01231     h-&gt;<a class="code" href="structecat63__mainheader.html#a2d2676e349d9446fba65f1185b22b6c9">scan_start_day</a>=scanStart-&gt;tm_mday;
<a name="l01232"></a>01232     h-&gt;<a class="code" href="structecat63__mainheader.html#a1f67ed153d99b8f1e5edf24850312275">scan_start_hour</a>=scanStart-&gt;tm_hour;
<a name="l01233"></a>01233     h-&gt;<a class="code" href="structecat63__mainheader.html#a152db2ee622ee372c1a0691ef9eea5a5">scan_start_minute</a>=scanStart-&gt;tm_min;
<a name="l01234"></a>01234     h-&gt;<a class="code" href="structecat63__mainheader.html#ae5de61076a9b1bfd13c22bea60c6b933">scan_start_second</a>=scanStart-&gt;tm_sec;
<a name="l01235"></a>01235   } <span class="keywordflow">else</span> {
<a name="l01236"></a>01236     h-&gt;<a class="code" href="structecat63__mainheader.html#ac50ce9695fe8b410dc42d611a9c3bff7">scan_start_year</a>=1900;
<a name="l01237"></a>01237     h-&gt;<a class="code" href="structecat63__mainheader.html#accef159de133ceecb8712a22b9aaa261">scan_start_month</a>=1;
<a name="l01238"></a>01238     h-&gt;<a class="code" href="structecat63__mainheader.html#a2d2676e349d9446fba65f1185b22b6c9">scan_start_day</a>=1;
<a name="l01239"></a>01239     h-&gt;<a class="code" href="structecat63__mainheader.html#a1f67ed153d99b8f1e5edf24850312275">scan_start_hour</a>=0;
<a name="l01240"></a>01240     h-&gt;<a class="code" href="structecat63__mainheader.html#a152db2ee622ee372c1a0691ef9eea5a5">scan_start_minute</a>=0;
<a name="l01241"></a>01241     h-&gt;<a class="code" href="structecat63__mainheader.html#ae5de61076a9b1bfd13c22bea60c6b933">scan_start_second</a>=0;
<a name="l01242"></a>01242   }
<a name="l01243"></a>01243   h-&gt;<a class="code" href="structecat63__mainheader.html#aa80e2c3fda2047135338e9525b48fb17">isotope_halflife</a>=img-&gt;<a class="code" href="structIMG.html#ac9c048a9dc8205b22518b05486d8030b">isotopeHalflife</a>;
<a name="l01244"></a>01244   strcpy(h-&gt;<a class="code" href="structecat63__mainheader.html#ad5e1bd9b72bdc5e5cc820bf25231bef5">isotope_code</a>, <a class="code" href="imgdecay_8c.html#a14db419685f526306032a84343eed72c">imgIsotope</a>(img));
<a name="l01245"></a>01245   strcpy(h-&gt;<a class="code" href="structecat63__mainheader.html#ae42d92d4f2b85a68511f266f7cddfc8c">study_name</a>, img-&gt;<a class="code" href="structIMG.html#ad76f79021c93175ec98839613ba4dcd2">studyNr</a>);
<a name="l01246"></a>01246   strcpy(h-&gt;<a class="code" href="structecat63__mainheader.html#a7c66591db9e9dd727d6707ea1051df88">patient_name</a>, img-&gt;<a class="code" href="structIMG.html#a29013e391052918bd5aa6974eeec811d">patientName</a>);
<a name="l01247"></a>01247   strcpy(h-&gt;<a class="code" href="structecat63__mainheader.html#ac0ca7836b26f3bcc824110278ecb6508">patient_id</a>, img-&gt;<a class="code" href="structIMG.html#a7dc9c21dbaf6b609a32e54c708e089c1">patientID</a>);
<a name="l01248"></a>01248   strncpy(h-&gt;<a class="code" href="structecat63__mainheader.html#aeae1e01c587128f945503d87cb6d3ada">user_process_code</a>, img-&gt;<a class="code" href="structIMG.html#a7743f4bab187593657c7bd4b7e99fe32">userProcessCode</a>, 10);
<a name="l01249"></a>01249   strncpy(h-&gt;<a class="code" href="structecat63__mainheader.html#a6322ecb4779f20b48b19360b605127e7">study_description</a>, img-&gt;<a class="code" href="structIMG.html#a3651200fbb19796a635502a7b7d2c2c3">studyDescription</a>, 32);
<a name="l01250"></a>01250 }
<a name="l01251"></a>01251 <span class="comment">/*****************************************************************************/</span>
<a name="l01252"></a>01252 
<a name="l01253"></a>01253 <span class="comment">/*****************************************************************************/</span>
<a name="l01260"></a><a class="code" href="imgfile_8h.html#a341c3d4960e40e361078839075b096fa">01260</a> <span class="keywordtype">int</span> <a class="code" href="img__e63_8c.html#a341c3d4960e40e361078839075b096fa">imgGetEcat63Fileformat</a>(<a class="code" href="structecat63__mainheader.html">ECAT63_mainheader</a> *h) {
<a name="l01261"></a>01261   <span class="keywordtype">int</span> fileFormat=<a class="code" href="img_8h.html#a3aea8253aaffd2e73cf8641661f6a459">IMG_UNKNOWN</a>;
<a name="l01262"></a>01262   <span class="keywordflow">switch</span>(h-&gt;<a class="code" href="structecat63__mainheader.html#aeb7fd4a6b107a810dcff5d82b6f58440">file_type</a>) {
<a name="l01263"></a>01263     <span class="keywordflow">case</span> <a class="code" href="ecat63_8h.html#aaf5f1adfda44941c4bf4de3e71219e4a">IMAGE_DATA</a>:
<a name="l01264"></a>01264     <span class="keywordflow">case</span> <a class="code" href="ecat63_8h.html#a7140d943b6f40ad3c4bdab5a2073c2f6">RAW_DATA</a>:
<a name="l01265"></a>01265     <span class="keywordflow">case</span> <a class="code" href="ecat63_8h.html#a23271440af335f92b16c81abdff7818a">ATTN_DATA</a>:
<a name="l01266"></a>01266     <span class="keywordflow">case</span> <a class="code" href="ecat63_8h.html#a978e691d4d6416577705c5c654096e02">NORM_DATA</a>:
<a name="l01267"></a>01267       fileFormat=<a class="code" href="img_8h.html#a7d502c1293f35b4392badbb9491ee95e">IMG_E63</a>; <span class="keywordflow">break</span>;
<a name="l01268"></a>01268     <span class="keywordflow">default</span>:
<a name="l01269"></a>01269       fileFormat=<a class="code" href="img_8h.html#a3aea8253aaffd2e73cf8641661f6a459">IMG_UNKNOWN</a>; <span class="keywordflow">break</span>;
<a name="l01270"></a>01270   }
<a name="l01271"></a>01271   <span class="keywordflow">return</span> fileFormat;
<a name="l01272"></a>01272 }
<a name="l01273"></a>01273 <span class="comment">/*****************************************************************************/</span>
<a name="l01274"></a>01274 
<a name="l01275"></a>01275 <span class="comment">/*****************************************************************************/</span>
<a name="l01289"></a><a class="code" href="imgfile_8h.html#ad2488060702b34b8ba7269131304905d">01289</a> <span class="keywordtype">int</span> <a class="code" href="img__e63_8c.html#ad2488060702b34b8ba7269131304905d">imgReadEcat63Header</a>(<span class="keyword">const</span> <span class="keywordtype">char</span> *fname, <a class="code" href="structIMG.html">IMG</a> *img) {
<a name="l01290"></a>01290   <span class="keywordtype">int</span>                 m, blkNr=0, ret=0;
<a name="l01291"></a>01291   <span class="keywordtype">int</span>                 frameNr, planeNr, del_nr=0;
<a name="l01292"></a>01292   FILE               *fp;
<a name="l01293"></a>01293   <a class="code" href="structecat63__mainheader.html">ECAT63_mainheader</a>   main_header;
<a name="l01294"></a>01294   <a class="code" href="structMATRIXLIST.html">MATRIXLIST</a>          mlist;
<a name="l01295"></a>01295   <a class="code" href="structecat63__imageheader.html">ECAT63_imageheader</a>  image_header;
<a name="l01296"></a>01296   <a class="code" href="structecat63__scanheader.html">ECAT63_scanheader</a>   scan_header;
<a name="l01297"></a>01297   <a class="code" href="structecat63__attnheader.html">ECAT63_attnheader</a>   attn_header;
<a name="l01298"></a>01298   <a class="code" href="structecat63__normheader.html">ECAT63_normheader</a>   norm_header;
<a name="l01299"></a>01299 
<a name="l01300"></a>01300 
<a name="l01301"></a>01301   <span class="keywordflow">if</span>(<a class="code" href="img_8h.html#a0d66ed136e5992b7b00ce6f43bad1439">IMG_TEST</a>) printf(<span class="stringliteral">&quot;\nimgReadEcat63Header(%s, *img)\n&quot;</span>, fname);
<a name="l01302"></a>01302   
<a name="l01303"></a>01303   <span class="comment">/* Check the arguments */</span>
<a name="l01304"></a>01304   <span class="keywordflow">if</span>(img==NULL) <span class="keywordflow">return</span> <a class="code" href="img_8h.html#a06fc87d81c62e9abb8790b6e5713c55baf8f3d89c25483639f6cbce4f6b08c1f8">STATUS_FAULT</a>;
<a name="l01305"></a>01305   <span class="keywordflow">if</span>(img-&gt;<a class="code" href="structIMG.html#a5b8bdc61088df4a3c3f89c31895b14a4">status</a>!=<a class="code" href="img_8h.html#a7aeab2fb426b858c78ec515aaa8f0a67">IMG_STATUS_INITIALIZED</a>) <span class="keywordflow">return</span> <a class="code" href="img_8h.html#a06fc87d81c62e9abb8790b6e5713c55baf8f3d89c25483639f6cbce4f6b08c1f8">STATUS_FAULT</a>;
<a name="l01306"></a>01306   <a class="code" href="img_8c.html#ad124d2d496934d677156cc8779a1e567">imgSetStatus</a>(img, <a class="code" href="img_8h.html#a06fc87d81c62e9abb8790b6e5713c55baf8f3d89c25483639f6cbce4f6b08c1f8">STATUS_FAULT</a>);
<a name="l01307"></a>01307   <span class="keywordflow">if</span>(fname==NULL) <span class="keywordflow">return</span> <a class="code" href="img_8h.html#a06fc87d81c62e9abb8790b6e5713c55baf8f3d89c25483639f6cbce4f6b08c1f8">STATUS_FAULT</a>;
<a name="l01308"></a>01308     
<a name="l01309"></a>01309   <span class="comment">/* Open the file */</span>
<a name="l01310"></a>01310   <span class="keywordflow">if</span>((fp=fopen(fname, <span class="stringliteral">&quot;rb&quot;</span>)) == NULL) <span class="keywordflow">return</span> <a class="code" href="img_8h.html#a06fc87d81c62e9abb8790b6e5713c55ba9f298b5339db644dbc2b9dc01ef12006">STATUS_NOFILE</a>;
<a name="l01311"></a>01311   
<a name="l01312"></a>01312   <span class="comment">/* Read main header */</span>
<a name="l01313"></a>01313   <span class="keywordflow">if</span>((ret=<a class="code" href="ecat63r_8c.html#af904c6b26259c4f280cdc18f92aeeae5">ecat63ReadMainheader</a>(fp, &amp;main_header))) {
<a name="l01314"></a>01314     fclose(fp); <span class="keywordflow">return</span> <a class="code" href="img_8h.html#a06fc87d81c62e9abb8790b6e5713c55bafa1051360f88591f14aa0383d8087132">STATUS_NOMAINHEADER</a>;}
<a name="l01315"></a>01315   <span class="comment">/* Check if file_type is supported */</span>
<a name="l01316"></a>01316   <span class="keywordflow">if</span>(<a class="code" href="img__e63_8c.html#a40e3f729d9bd35fdd7aaa4628071db33">imgEcat63Supported</a>(&amp;main_header)==0) {fclose(fp); <span class="keywordflow">return</span> <a class="code" href="img_8h.html#a06fc87d81c62e9abb8790b6e5713c55baef2b214bb9b6ccc009f27c76e81b3fef">STATUS_UNSUPPORTED</a>;}
<a name="l01317"></a>01317   <span class="comment">/* Copy main header information into IMG; sets also img.type */</span>
<a name="l01318"></a>01318   <a class="code" href="img__e63_8c.html#ad140be5ae9976dfa2abbbe973517451d">imgGetEcat63MHeader</a>(img, &amp;main_header);
<a name="l01319"></a>01319   <span class="keywordflow">if</span>(<a class="code" href="img_8h.html#a0d66ed136e5992b7b00ce6f43bad1439">IMG_TEST</a>&gt;7) printf(<span class="stringliteral">&quot;img.type := %d\n&quot;</span>, img-&gt;<a class="code" href="structIMG.html#a0d9199e1c3c4bd94d56eb30e421b309c">type</a>);
<a name="l01320"></a>01320   img-&gt;<a class="code" href="structIMG.html#a5e25c84c23270f974f1eb7c32a01bac7">_fileFormat</a>=<a class="code" href="img__e63_8c.html#a341c3d4960e40e361078839075b096fa">imgGetEcat63Fileformat</a>(&amp;main_header);
<a name="l01321"></a>01321   <span class="keywordflow">if</span>(<a class="code" href="img_8h.html#a0d66ed136e5992b7b00ce6f43bad1439">IMG_TEST</a>&gt;7) printf(<span class="stringliteral">&quot;img._fileFormat := %d\n&quot;</span>, img-&gt;<a class="code" href="structIMG.html#a5e25c84c23270f974f1eb7c32a01bac7">_fileFormat</a>);
<a name="l01322"></a>01322   <span class="keywordflow">if</span>(img-&gt;<a class="code" href="structIMG.html#a5e25c84c23270f974f1eb7c32a01bac7">_fileFormat</a>==<a class="code" href="img_8h.html#a3aea8253aaffd2e73cf8641661f6a459">IMG_UNKNOWN</a>) {fclose(fp); <span class="keywordflow">return</span> <a class="code" href="img_8h.html#a06fc87d81c62e9abb8790b6e5713c55baef2b214bb9b6ccc009f27c76e81b3fef">STATUS_UNSUPPORTED</a>;}
<a name="l01323"></a>01323 
<a name="l01324"></a>01324   <span class="comment">/* Read matrix list and nr and sort it */</span>
<a name="l01325"></a>01325   <a class="code" href="ecat63ml_8c.html#a2477fe69c32ce33b443b9c0eaedae423">ecat63InitMatlist</a>(&amp;mlist);
<a name="l01326"></a>01326   ret=<a class="code" href="ecat63ml_8c.html#a6cce9d0e541e82d56c9d162f16202179">ecat63ReadMatlist</a>(fp, &amp;mlist);
<a name="l01327"></a>01327   <span class="keywordflow">if</span>(ret) {fclose(fp); <span class="keywordflow">return</span> <a class="code" href="img_8h.html#a06fc87d81c62e9abb8790b6e5713c55ba5b6084734072653f2466e29481713c4b">STATUS_NOMATLIST</a>;}
<a name="l01328"></a>01328   <span class="keywordflow">if</span>(mlist.<a class="code" href="structMATRIXLIST.html#a7fcfb983a42851d8562084ddde1f9fcd">matrixNr</a>&lt;=0) {
<a name="l01329"></a>01329     <a class="code" href="ecat63ml_8c.html#a2d931d7e3d4e21159731b7c480c209b9">ecat63EmptyMatlist</a>(&amp;mlist); fclose(fp); <span class="keywordflow">return</span> <a class="code" href="img_8h.html#a06fc87d81c62e9abb8790b6e5713c55bae2d56db7d13d44bec04369ae30c44a6c">STATUS_INVALIDMATLIST</a>;}
<a name="l01330"></a>01330   <span class="comment">/* Make sure that plane and frame numbers are continuous */</span>
<a name="l01331"></a>01331   <a class="code" href="ecat63ml_8c.html#a39dccd7c874d89f8a84d57d86ce0e6b1">ecat63GatherMatlist</a>(&amp;mlist, 1, 1, 1, 1);
<a name="l01332"></a>01332   <a class="code" href="ecat63ml_8c.html#aa2765243cddea6955fe20e0a7d453b36">ecat63SortMatlistByPlane</a>(&amp;mlist); <span class="comment">/* otherwise frameNr cannot be computed as below */</span>
<a name="l01333"></a>01333   <span class="comment">/* Trim extra frames */</span>
<a name="l01334"></a>01334   <span class="keywordflow">if</span>(main_header.<a class="code" href="structecat63__mainheader.html#a01ad1f4be366fb3ad82da61022e9761c">num_frames</a>&gt;0)
<a name="l01335"></a>01335     del_nr=<a class="code" href="ecat63ml_8c.html#a9dc9509d99d809410fc5904410562856">ecat63DeleteLateFrames</a>(&amp;mlist, main_header.<a class="code" href="structecat63__mainheader.html#a01ad1f4be366fb3ad82da61022e9761c">num_frames</a>);
<a name="l01336"></a>01336   <span class="comment">/* Get plane and frame numbers and check that volume is full */</span>
<a name="l01337"></a>01337   ret=<a class="code" href="ecat63ml_8c.html#a231a6f12df0eeec69699a0d4f3aa4c42">ecat63GetPlaneAndFrameNr</a>(&amp;mlist, &amp;main_header, &amp;planeNr, &amp;frameNr);
<a name="l01338"></a>01338   <span class="keywordflow">if</span>(ret) {<a class="code" href="ecat63ml_8c.html#a2d931d7e3d4e21159731b7c480c209b9">ecat63EmptyMatlist</a>(&amp;mlist); fclose(fp); <span class="keywordflow">return</span> ret;}
<a name="l01339"></a>01339   img-&gt;<a class="code" href="structIMG.html#a9c04780b47e6a627a2b700b76352c3fc">dimz</a>=planeNr;
<a name="l01340"></a>01340   img-&gt;<a class="code" href="structIMG.html#a77605d4aa64b86294590c79e9a761b15">dimt</a>=frameNr;
<a name="l01341"></a>01341   <span class="comment">/* Calculate and check the size of one data matrix */</span>
<a name="l01342"></a>01342   ret=<a class="code" href="ecat63ml_8c.html#a8955edf44cdf0be247f73cbc7dd808c1">ecat63GetMatrixBlockSize</a>(&amp;mlist, &amp;blkNr);
<a name="l01343"></a>01343   <span class="keywordflow">if</span>(ret) {<a class="code" href="ecat63ml_8c.html#a2d931d7e3d4e21159731b7c480c209b9">ecat63EmptyMatlist</a>(&amp;mlist); fclose(fp); <span class="keywordflow">return</span> ret;}
<a name="l01344"></a>01344 
<a name="l01345"></a>01345   <span class="comment">/* Read one subheader */</span>
<a name="l01346"></a>01346   <span class="keywordflow">if</span>(<a class="code" href="img_8h.html#a0d66ed136e5992b7b00ce6f43bad1439">IMG_TEST</a>&gt;5) printf(<span class="stringliteral">&quot;main_header.file_type := %d\n&quot;</span>, main_header.<a class="code" href="structecat63__mainheader.html#aeb7fd4a6b107a810dcff5d82b6f58440">file_type</a>);
<a name="l01347"></a>01347   m=0;
<a name="l01348"></a>01348   <span class="keywordflow">switch</span>(main_header.<a class="code" href="structecat63__mainheader.html#aeb7fd4a6b107a810dcff5d82b6f58440">file_type</a>) {
<a name="l01349"></a>01349     <span class="keywordflow">case</span> <a class="code" href="ecat63_8h.html#aaf5f1adfda44941c4bf4de3e71219e4a">IMAGE_DATA</a>:
<a name="l01350"></a>01350       ret=<a class="code" href="ecat63r_8c.html#adc36293804c18dd15771c61500841b7c">ecat63ReadImageheader</a>(fp, mlist.<a class="code" href="structMATRIXLIST.html#a42676745379d69392b07b5c29626f6f9">matdir</a>[m].<a class="code" href="structMatDir.html#af91ca45aca86269901b03480b5b6d741">strtblk</a>, &amp;image_header);
<a name="l01351"></a>01351       <span class="keywordflow">break</span>;
<a name="l01352"></a>01352     <span class="keywordflow">case</span> <a class="code" href="ecat63_8h.html#a7140d943b6f40ad3c4bdab5a2073c2f6">RAW_DATA</a>:
<a name="l01353"></a>01353       ret=<a class="code" href="ecat63r_8c.html#a811c9c52c52f1c749ee6cb0f7a51f884">ecat63ReadScanheader</a>(fp, mlist.<a class="code" href="structMATRIXLIST.html#a42676745379d69392b07b5c29626f6f9">matdir</a>[m].<a class="code" href="structMatDir.html#af91ca45aca86269901b03480b5b6d741">strtblk</a>, &amp;scan_header);
<a name="l01354"></a>01354       <span class="keywordflow">break</span>;
<a name="l01355"></a>01355     <span class="keywordflow">case</span> <a class="code" href="ecat63_8h.html#a23271440af335f92b16c81abdff7818a">ATTN_DATA</a>:
<a name="l01356"></a>01356       ret=<a class="code" href="ecat63r_8c.html#ac9c08bd1e03ddc4f4a8c83a5ea198e05">ecat63ReadAttnheader</a>(fp, mlist.<a class="code" href="structMATRIXLIST.html#a42676745379d69392b07b5c29626f6f9">matdir</a>[m].<a class="code" href="structMatDir.html#af91ca45aca86269901b03480b5b6d741">strtblk</a>, &amp;attn_header);
<a name="l01357"></a>01357       <span class="keywordflow">break</span>;
<a name="l01358"></a>01358     <span class="keywordflow">case</span> <a class="code" href="ecat63_8h.html#a978e691d4d6416577705c5c654096e02">NORM_DATA</a>:
<a name="l01359"></a>01359       ret=<a class="code" href="ecat63r_8c.html#a6a169297491f0f8a734247467cfb2b89">ecat63ReadNormheader</a>(fp, mlist.<a class="code" href="structMATRIXLIST.html#a42676745379d69392b07b5c29626f6f9">matdir</a>[m].<a class="code" href="structMatDir.html#af91ca45aca86269901b03480b5b6d741">strtblk</a>, &amp;norm_header);
<a name="l01360"></a>01360       <span class="keywordflow">break</span>;
<a name="l01361"></a>01361     <span class="keywordflow">default</span>: ret=-1;
<a name="l01362"></a>01362   }
<a name="l01363"></a>01363   <span class="comment">/* Free locally allocated memory and close the file */</span>
<a name="l01364"></a>01364   <a class="code" href="ecat63ml_8c.html#a2d931d7e3d4e21159731b7c480c209b9">ecat63EmptyMatlist</a>(&amp;mlist); fclose(fp);
<a name="l01365"></a>01365   <span class="comment">/* Check whether subheader was read */</span>
<a name="l01366"></a>01366   <span class="keywordflow">if</span>(ret) <span class="keywordflow">return</span> <a class="code" href="img_8h.html#a06fc87d81c62e9abb8790b6e5713c55bae6ad5f97cf86fa7686fd12961e4ccdf4">STATUS_NOSUBHEADER</a>;
<a name="l01367"></a>01367 
<a name="l01368"></a>01368   <span class="comment">/* Get the following information in the subheader:</span>
<a name="l01369"></a>01369 <span class="comment">     dimensions x, y and z; datatype;</span>
<a name="l01370"></a>01370 <span class="comment">     image decay correction on/off, zoom, and pixel size;</span>
<a name="l01371"></a>01371 <span class="comment">     sinogram sample distance.</span>
<a name="l01372"></a>01372 <span class="comment">   */</span>
<a name="l01373"></a>01373   <span class="keywordflow">switch</span>(main_header.<a class="code" href="structecat63__mainheader.html#aeb7fd4a6b107a810dcff5d82b6f58440">file_type</a>) {
<a name="l01374"></a>01374     <span class="keywordflow">case</span> <a class="code" href="ecat63_8h.html#aaf5f1adfda44941c4bf4de3e71219e4a">IMAGE_DATA</a>:
<a name="l01375"></a>01375       img-&gt;<a class="code" href="structIMG.html#a0818b82059710627a94282a793ff7030">dimx</a>=image_header.<a class="code" href="structecat63__imageheader.html#a86aae28e4de4b65fa5de745aab0bf082">dimension_1</a>; img-&gt;<a class="code" href="structIMG.html#aa17e87812503d3c142f31c08abcbf79d">dimy</a>=image_header.<a class="code" href="structecat63__imageheader.html#ad53dbc60f5f5a34b7327abbf0d609d5d">dimension_2</a>;
<a name="l01376"></a>01376       <span class="keywordflow">if</span>(img-&gt;<a class="code" href="structIMG.html#a53ee896ca7a94425dcf45c51eaf0a1d3">unit</a>&lt;1) <a class="code" href="imgunit_8c.html#a99853914e3480ab82c7163b0612e8b28">imgUnitFromEcat</a>(img, image_header.<a class="code" href="structecat63__imageheader.html#a38136ac931d35627e8644ccc71d97aec">quant_units</a>);
<a name="l01377"></a>01377       img-&gt;<a class="code" href="structIMG.html#a780bf2ffdee9e977a3a51febb7696701">_dataType</a>=image_header.<a class="code" href="structecat63__imageheader.html#a00da8baaaefa0ca83e0c12636b298196">data_type</a>;
<a name="l01378"></a>01378       img-&gt;<a class="code" href="structIMG.html#ab23da0c2295967727c6d33d0fbdc8c88">zoom</a>=image_header.<a class="code" href="structecat63__imageheader.html#a9a0fd8c173273797330c7c67effdffd6">recon_scale</a>;
<a name="l01379"></a>01379       <span class="keywordflow">if</span>(image_header.<a class="code" href="structecat63__imageheader.html#a46ec10bffd9ad4bd54271b68022bd41c">decay_corr_fctr</a>&gt;1.0) img-&gt;<a class="code" href="structIMG.html#a6ce801dea67ec8224e8cfc9aebb8a909">decayCorrected</a>=1;
<a name="l01380"></a>01380       img-&gt;<a class="code" href="structIMG.html#a02cc239e917e7ebf85e34f21448ff080">sizex</a>=img-&gt;<a class="code" href="structIMG.html#a80b0609c63f33934bf6e6678c6121cb3">sizey</a>=10.*image_header.<a class="code" href="structecat63__imageheader.html#a749a7dfb6443194317be2260fc7b5b7b">pixel_size</a>;
<a name="l01381"></a>01381       <span class="keywordflow">if</span>(img-&gt;<a class="code" href="structIMG.html#afc2a1d2417a8a3afe2c500173a05c472">sizez</a>&lt;10.*image_header.<a class="code" href="structecat63__imageheader.html#ac2b4f461866cfcbe8bf33939d461becc">slice_width</a>)
<a name="l01382"></a>01382         img-&gt;<a class="code" href="structIMG.html#afc2a1d2417a8a3afe2c500173a05c472">sizez</a>=10.*image_header.<a class="code" href="structecat63__imageheader.html#ac2b4f461866cfcbe8bf33939d461becc">slice_width</a>;
<a name="l01383"></a>01383       <span class="keywordflow">break</span>;
<a name="l01384"></a>01384     <span class="keywordflow">case</span> <a class="code" href="ecat63_8h.html#a7140d943b6f40ad3c4bdab5a2073c2f6">RAW_DATA</a>:
<a name="l01385"></a>01385       img-&gt;<a class="code" href="structIMG.html#a0818b82059710627a94282a793ff7030">dimx</a>=scan_header.<a class="code" href="structecat63__scanheader.html#adee5ad20def49d6f13da7efde9da4e3e">dimension_1</a>; img-&gt;<a class="code" href="structIMG.html#aa17e87812503d3c142f31c08abcbf79d">dimy</a>=scan_header.<a class="code" href="structecat63__scanheader.html#a87c12560397fa7408d95ad30d1800f92">dimension_2</a>;
<a name="l01386"></a>01386       img-&gt;<a class="code" href="structIMG.html#a0d9199e1c3c4bd94d56eb30e421b309c">type</a>=<a class="code" href="img_8h.html#a04e835f7aec92fcc1d4ecf37e0dd2e9c">IMG_TYPE_RAW</a>;
<a name="l01387"></a>01387       img-&gt;<a class="code" href="structIMG.html#a780bf2ffdee9e977a3a51febb7696701">_dataType</a>=scan_header.<a class="code" href="structecat63__scanheader.html#ad1ee12caf8404e9237c9b14d95711109">data_type</a>;
<a name="l01388"></a>01388       img-&gt;<a class="code" href="structIMG.html#a6ce801dea67ec8224e8cfc9aebb8a909">decayCorrected</a>=0;
<a name="l01389"></a>01389       img-&gt;<a class="code" href="structIMG.html#a399dae5b27dda8d5e1b0e96c885513e4">sampleDistance</a>=10.0*scan_header.<a class="code" href="structecat63__scanheader.html#acb676ed22b052fbaa07bd044263ac279">sample_distance</a>;
<a name="l01390"></a>01390       <span class="keywordflow">break</span>;
<a name="l01391"></a>01391     <span class="keywordflow">case</span> <a class="code" href="ecat63_8h.html#a23271440af335f92b16c81abdff7818a">ATTN_DATA</a>:
<a name="l01392"></a>01392       img-&gt;<a class="code" href="structIMG.html#a0818b82059710627a94282a793ff7030">dimx</a>=attn_header.<a class="code" href="structecat63__attnheader.html#acbea9636493630fc7bdc3de4fcd4cfa2">dimension_1</a>; img-&gt;<a class="code" href="structIMG.html#aa17e87812503d3c142f31c08abcbf79d">dimy</a>=attn_header.<a class="code" href="structecat63__attnheader.html#af9fa1e4491aa3321b4ce99f54e5ebb6e">dimension_2</a>;
<a name="l01393"></a>01393       img-&gt;<a class="code" href="structIMG.html#a0d9199e1c3c4bd94d56eb30e421b309c">type</a>=<a class="code" href="img_8h.html#a04e835f7aec92fcc1d4ecf37e0dd2e9c">IMG_TYPE_RAW</a>;
<a name="l01394"></a>01394       img-&gt;<a class="code" href="structIMG.html#a6ce801dea67ec8224e8cfc9aebb8a909">decayCorrected</a>=0;
<a name="l01395"></a>01395       img-&gt;<a class="code" href="structIMG.html#a780bf2ffdee9e977a3a51febb7696701">_dataType</a>=attn_header.<a class="code" href="structecat63__attnheader.html#ac5bea9d6b3dae0b4c87d5e66a0d2006e">data_type</a>;
<a name="l01396"></a>01396       <span class="keywordflow">break</span>;
<a name="l01397"></a>01397     <span class="keywordflow">case</span> <a class="code" href="ecat63_8h.html#a978e691d4d6416577705c5c654096e02">NORM_DATA</a>:
<a name="l01398"></a>01398       img-&gt;<a class="code" href="structIMG.html#a0818b82059710627a94282a793ff7030">dimx</a>=norm_header.<a class="code" href="structecat63__normheader.html#a546d6d89d6df87d2de51c1588884d5b5">dimension_1</a>; img-&gt;<a class="code" href="structIMG.html#aa17e87812503d3c142f31c08abcbf79d">dimy</a>=norm_header.<a class="code" href="structecat63__normheader.html#aa49aa059f33fad5d960b044da8076fe7">dimension_2</a>;
<a name="l01399"></a>01399       img-&gt;<a class="code" href="structIMG.html#a0d9199e1c3c4bd94d56eb30e421b309c">type</a>=<a class="code" href="img_8h.html#a04e835f7aec92fcc1d4ecf37e0dd2e9c">IMG_TYPE_RAW</a>;
<a name="l01400"></a>01400       img-&gt;<a class="code" href="structIMG.html#a6ce801dea67ec8224e8cfc9aebb8a909">decayCorrected</a>=0;
<a name="l01401"></a>01401       img-&gt;<a class="code" href="structIMG.html#a780bf2ffdee9e977a3a51febb7696701">_dataType</a>=norm_header.<a class="code" href="structecat63__normheader.html#ae7d4136070d36e9edbe684a80e39b942">data_type</a>;
<a name="l01402"></a>01402       <span class="keywordflow">break</span>;
<a name="l01403"></a>01403   }
<a name="l01404"></a>01404 
<a name="l01405"></a>01405   <span class="comment">/* For saving IMG data, only 2-byte VAX data types are allowed, so change it now */</span>
<a name="l01406"></a>01406   <span class="keywordflow">if</span>(img-&gt;<a class="code" href="structIMG.html#a780bf2ffdee9e977a3a51febb7696701">_dataType</a>==<a class="code" href="ecat63_8h.html#a91402eabd36b6383a537f5ba993e1d13">VAX_I4</a> || img-&gt;<a class="code" href="structIMG.html#a780bf2ffdee9e977a3a51febb7696701">_dataType</a>==<a class="code" href="ecat63_8h.html#a43d671e0f827418673872adcd63418c4">VAX_R4</a>) img-&gt;<a class="code" href="structIMG.html#a780bf2ffdee9e977a3a51febb7696701">_dataType</a>=<a class="code" href="ecat63_8h.html#ab6ed0aaf03f063c606604089878ed91a">VAX_I2</a>;
<a name="l01407"></a>01407 
<a name="l01408"></a>01408   <a class="code" href="img_8c.html#ad124d2d496934d677156cc8779a1e567">imgSetStatus</a>(img, <a class="code" href="img_8h.html#a06fc87d81c62e9abb8790b6e5713c55ba7e4a42e3b6dd63708c64cf3db6f69566">STATUS_OK</a>);
<a name="l01409"></a>01409   <span class="keywordflow">return</span> <a class="code" href="img_8h.html#a06fc87d81c62e9abb8790b6e5713c55ba7e4a42e3b6dd63708c64cf3db6f69566">STATUS_OK</a>;
<a name="l01410"></a>01410 }
<a name="l01411"></a>01411 <span class="comment">/*****************************************************************************/</span>
<a name="l01412"></a>01412 
<a name="l01413"></a>01413 <span class="comment">/*****************************************************************************/</span>
<a name="l01422"></a><a class="code" href="imgfile_8h.html#a80fc3a20b3c37740a6b47df9c6075380">01422</a> <span class="keywordtype">int</span> <a class="code" href="img__e63_8c.html#a80fc3a20b3c37740a6b47df9c6075380">imgReadEcat63FirstFrame</a>(<span class="keyword">const</span> <span class="keywordtype">char</span> *fname, <a class="code" href="structIMG.html">IMG</a> *img) {
<a name="l01423"></a>01423   <span class="keywordtype">int</span> ret=0;
<a name="l01424"></a>01424 
<a name="l01425"></a>01425   <span class="keywordflow">if</span>(<a class="code" href="img_8h.html#a0d66ed136e5992b7b00ce6f43bad1439">IMG_TEST</a>) printf(<span class="stringliteral">&quot;\nimgReadEcat63FirstFrame(%s, *img)\n&quot;</span>, fname);
<a name="l01426"></a>01426   <span class="comment">/* Check the input */</span>
<a name="l01427"></a>01427   <span class="keywordflow">if</span>(img==NULL) <span class="keywordflow">return</span> <a class="code" href="img_8h.html#a06fc87d81c62e9abb8790b6e5713c55baf8f3d89c25483639f6cbce4f6b08c1f8">STATUS_FAULT</a>;
<a name="l01428"></a>01428   <span class="keywordflow">if</span>(img-&gt;<a class="code" href="structIMG.html#a5b8bdc61088df4a3c3f89c31895b14a4">status</a>!=<a class="code" href="img_8h.html#a7aeab2fb426b858c78ec515aaa8f0a67">IMG_STATUS_INITIALIZED</a>) <span class="keywordflow">return</span> <a class="code" href="img_8h.html#a06fc87d81c62e9abb8790b6e5713c55baf8f3d89c25483639f6cbce4f6b08c1f8">STATUS_FAULT</a>;
<a name="l01429"></a>01429   <a class="code" href="img_8c.html#ad124d2d496934d677156cc8779a1e567">imgSetStatus</a>(img, <a class="code" href="img_8h.html#a06fc87d81c62e9abb8790b6e5713c55baf8f3d89c25483639f6cbce4f6b08c1f8">STATUS_FAULT</a>);
<a name="l01430"></a>01430   <span class="keywordflow">if</span>(fname==NULL) <span class="keywordflow">return</span> <a class="code" href="img_8h.html#a06fc87d81c62e9abb8790b6e5713c55baf8f3d89c25483639f6cbce4f6b08c1f8">STATUS_FAULT</a>;
<a name="l01431"></a>01431 
<a name="l01432"></a>01432   <span class="comment">/* Read header information from file */</span>
<a name="l01433"></a>01433   ret=<a class="code" href="img__e63_8c.html#ad2488060702b34b8ba7269131304905d">imgReadEcat63Header</a>(fname, img); <span class="keywordflow">if</span>(ret) <span class="keywordflow">return</span>(ret);
<a name="l01434"></a>01434   <span class="keywordflow">if</span>(<a class="code" href="img_8h.html#a0d66ed136e5992b7b00ce6f43bad1439">IMG_TEST</a>&gt;3) <a class="code" href="img_8c.html#a32edd1b78039f6cc22b7bbe413aa3a56">imgInfo</a>(img);
<a name="l01435"></a>01435 
<a name="l01436"></a>01436   <span class="comment">/* Allocate memory for one frame */</span>
<a name="l01437"></a>01437   img-&gt;<a class="code" href="structIMG.html#a77605d4aa64b86294590c79e9a761b15">dimt</a>=1;
<a name="l01438"></a>01438   ret=<a class="code" href="img_8c.html#a9b2670da9c7685e6d53058cdf1db1199">imgAllocate</a>(img, img-&gt;<a class="code" href="structIMG.html#a9c04780b47e6a627a2b700b76352c3fc">dimz</a>, img-&gt;<a class="code" href="structIMG.html#aa17e87812503d3c142f31c08abcbf79d">dimy</a>, img-&gt;<a class="code" href="structIMG.html#a0818b82059710627a94282a793ff7030">dimx</a>, img-&gt;<a class="code" href="structIMG.html#a77605d4aa64b86294590c79e9a761b15">dimt</a>);
<a name="l01439"></a>01439   <span class="keywordflow">if</span>(ret) <span class="keywordflow">return</span> <a class="code" href="img_8h.html#a06fc87d81c62e9abb8790b6e5713c55bafbe470f6663c748e405bf509d2bb57bb">STATUS_NOMEMORY</a>;
<a name="l01440"></a>01440 
<a name="l01441"></a>01441   <span class="comment">/* Read the first frame */</span>
<a name="l01442"></a>01442   ret=<a class="code" href="img__e63_8c.html#af1d9d568d55cc463db9fb81f36b0f737">imgReadEcat63Frame</a>(fname, 1, img, 0); <span class="keywordflow">if</span>(ret) <span class="keywordflow">return</span>(ret); 
<a name="l01443"></a>01443 
<a name="l01444"></a>01444   <span class="comment">/* All went well */</span>
<a name="l01445"></a>01445   <a class="code" href="img_8c.html#ad124d2d496934d677156cc8779a1e567">imgSetStatus</a>(img, <a class="code" href="img_8h.html#a06fc87d81c62e9abb8790b6e5713c55ba7e4a42e3b6dd63708c64cf3db6f69566">STATUS_OK</a>);
<a name="l01446"></a>01446   <span class="keywordflow">return</span> <a class="code" href="img_8h.html#a06fc87d81c62e9abb8790b6e5713c55ba7e4a42e3b6dd63708c64cf3db6f69566">STATUS_OK</a>;
<a name="l01447"></a>01447 }
<a name="l01448"></a>01448 <span class="comment">/*****************************************************************************/</span>
<a name="l01449"></a>01449 
<a name="l01450"></a>01450 <span class="comment">/*****************************************************************************/</span>
<a name="l01464"></a><a class="code" href="imgfile_8h.html#af1d9d568d55cc463db9fb81f36b0f737">01464</a> <span class="keywordtype">int</span> <a class="code" href="img__e63_8c.html#af1d9d568d55cc463db9fb81f36b0f737">imgReadEcat63Frame</a>(<span class="keyword">const</span> <span class="keywordtype">char</span> *fname, <span class="keywordtype">int</span> frame_to_read, <a class="code" href="structIMG.html">IMG</a> *img, <span class="keywordtype">int</span> frame_index) {
<a name="l01465"></a>01465   <span class="keywordtype">int</span>                 m, ret=0, blkNr=0, frame, plane, seqplane=-1, xi, yi;
<a name="l01466"></a>01466   <span class="keywordtype">int</span>                 local_data_type=0;
<a name="l01467"></a>01467   FILE               *fp;
<a name="l01468"></a>01468   <a class="code" href="structecat63__mainheader.html">ECAT63_mainheader</a>   main_header;
<a name="l01469"></a>01469   <a class="code" href="structMATRIXLIST.html">MATRIXLIST</a>          mlist;
<a name="l01470"></a>01470   <a class="code" href="structMatval.html">Matval</a>              matval;
<a name="l01471"></a>01471   <a class="code" href="structecat63__imageheader.html">ECAT63_imageheader</a>  image_header;
<a name="l01472"></a>01472   <a class="code" href="structecat63__scanheader.html">ECAT63_scanheader</a>   scan_header;
<a name="l01473"></a>01473   <a class="code" href="structecat63__attnheader.html">ECAT63_attnheader</a>   attn_header;
<a name="l01474"></a>01474   <a class="code" href="structecat63__normheader.html">ECAT63_normheader</a>   norm_header;
<a name="l01475"></a>01475   <span class="keywordtype">float</span>               scale=1.0;
<a name="l01476"></a>01476   <span class="keywordtype">short</span> <span class="keywordtype">int</span>          *sptr;
<a name="l01477"></a>01477   <span class="keywordtype">char</span>               *mdata=NULL, *mptr;
<a name="l01478"></a>01478   <span class="keywordtype">int</span>                *iptr;
<a name="l01479"></a>01479 
<a name="l01480"></a>01480 
<a name="l01481"></a>01481   <span class="keywordflow">if</span>(<a class="code" href="img_8h.html#a0d66ed136e5992b7b00ce6f43bad1439">IMG_TEST</a>) printf(<span class="stringliteral">&quot;\nimgReadEcat63Frame(%s, %d, *img, %d)\n&quot;</span>,
<a name="l01482"></a>01482     fname, frame_to_read, frame_index);
<a name="l01483"></a>01483     
<a name="l01484"></a>01484   <span class="comment">/* Check the input */</span>
<a name="l01485"></a>01485   <span class="keywordflow">if</span>(img==NULL) <span class="keywordflow">return</span> <a class="code" href="img_8h.html#a06fc87d81c62e9abb8790b6e5713c55baf8f3d89c25483639f6cbce4f6b08c1f8">STATUS_FAULT</a>;
<a name="l01486"></a>01486   <span class="keywordflow">if</span>(img-&gt;<a class="code" href="structIMG.html#a5b8bdc61088df4a3c3f89c31895b14a4">status</a>!=<a class="code" href="img_8h.html#a3117b1b0649d3761dcda1395202129e5">IMG_STATUS_OCCUPIED</a>) <span class="keywordflow">return</span> <a class="code" href="img_8h.html#a06fc87d81c62e9abb8790b6e5713c55baf8f3d89c25483639f6cbce4f6b08c1f8">STATUS_FAULT</a>;
<a name="l01487"></a>01487   <a class="code" href="img_8c.html#ad124d2d496934d677156cc8779a1e567">imgSetStatus</a>(img, <a class="code" href="img_8h.html#a06fc87d81c62e9abb8790b6e5713c55baf8f3d89c25483639f6cbce4f6b08c1f8">STATUS_FAULT</a>);
<a name="l01488"></a>01488   <span class="keywordflow">if</span>(fname==NULL) <span class="keywordflow">return</span> <a class="code" href="img_8h.html#a06fc87d81c62e9abb8790b6e5713c55baf8f3d89c25483639f6cbce4f6b08c1f8">STATUS_FAULT</a>;
<a name="l01489"></a>01489   <span class="keywordflow">if</span>(frame_index&lt;0 || frame_index&gt;img-&gt;<a class="code" href="structIMG.html#a77605d4aa64b86294590c79e9a761b15">dimt</a>-1) <span class="keywordflow">return</span> <a class="code" href="img_8h.html#a06fc87d81c62e9abb8790b6e5713c55baf8f3d89c25483639f6cbce4f6b08c1f8">STATUS_FAULT</a>;
<a name="l01490"></a>01490   <span class="keywordflow">if</span>(frame_to_read&lt;1) <span class="keywordflow">return</span> <a class="code" href="img_8h.html#a06fc87d81c62e9abb8790b6e5713c55baf8f3d89c25483639f6cbce4f6b08c1f8">STATUS_FAULT</a>;
<a name="l01491"></a>01491 
<a name="l01492"></a>01492   <span class="comment">/* Open the file */</span>
<a name="l01493"></a>01493   <span class="keywordflow">if</span>((fp=fopen(fname, <span class="stringliteral">&quot;rb&quot;</span>)) == NULL) <span class="keywordflow">return</span> <a class="code" href="img_8h.html#a06fc87d81c62e9abb8790b6e5713c55ba9f298b5339db644dbc2b9dc01ef12006">STATUS_NOFILE</a>;
<a name="l01494"></a>01494   
<a name="l01495"></a>01495   <span class="comment">/* Read main header */</span>
<a name="l01496"></a>01496   <span class="keywordflow">if</span>((ret=<a class="code" href="ecat63r_8c.html#af904c6b26259c4f280cdc18f92aeeae5">ecat63ReadMainheader</a>(fp, &amp;main_header))) {
<a name="l01497"></a>01497     fclose(fp); <span class="keywordflow">return</span> <a class="code" href="img_8h.html#a06fc87d81c62e9abb8790b6e5713c55bafa1051360f88591f14aa0383d8087132">STATUS_NOMAINHEADER</a>;}
<a name="l01498"></a>01498 
<a name="l01499"></a>01499   <span class="comment">/* Read matrix list and nr and sort it */</span>
<a name="l01500"></a>01500   <a class="code" href="ecat63ml_8c.html#a2477fe69c32ce33b443b9c0eaedae423">ecat63InitMatlist</a>(&amp;mlist);
<a name="l01501"></a>01501   ret=<a class="code" href="ecat63ml_8c.html#a6cce9d0e541e82d56c9d162f16202179">ecat63ReadMatlist</a>(fp, &amp;mlist);
<a name="l01502"></a>01502   <span class="keywordflow">if</span>(ret) {fclose(fp); <span class="keywordflow">return</span> <a class="code" href="img_8h.html#a06fc87d81c62e9abb8790b6e5713c55ba5b6084734072653f2466e29481713c4b">STATUS_NOMATLIST</a>;}
<a name="l01503"></a>01503   <span class="keywordflow">if</span>(mlist.<a class="code" href="structMATRIXLIST.html#a7fcfb983a42851d8562084ddde1f9fcd">matrixNr</a>&lt;=0) {
<a name="l01504"></a>01504     fclose(fp); <a class="code" href="ecat63ml_8c.html#a2d931d7e3d4e21159731b7c480c209b9">ecat63EmptyMatlist</a>(&amp;mlist); <span class="keywordflow">return</span> <a class="code" href="img_8h.html#a06fc87d81c62e9abb8790b6e5713c55bae2d56db7d13d44bec04369ae30c44a6c">STATUS_INVALIDMATLIST</a>;}
<a name="l01505"></a>01505   <span class="comment">/* Make sure that plane and frame numbers are continuous */</span>
<a name="l01506"></a>01506   <a class="code" href="ecat63ml_8c.html#a39dccd7c874d89f8a84d57d86ce0e6b1">ecat63GatherMatlist</a>(&amp;mlist, 1, 1, 1, 1);
<a name="l01507"></a>01507   <a class="code" href="ecat63ml_8c.html#af88528086eaae0762fa9c551f3e55d92">ecat63SortMatlistByFrame</a>(&amp;mlist);
<a name="l01508"></a>01508   
<a name="l01509"></a>01509   <span class="comment">/* Calculate and check the size of one data matrix */</span>
<a name="l01510"></a>01510   ret=<a class="code" href="ecat63ml_8c.html#a8955edf44cdf0be247f73cbc7dd808c1">ecat63GetMatrixBlockSize</a>(&amp;mlist, &amp;blkNr);
<a name="l01511"></a>01511   <span class="keywordflow">if</span>(ret) {<a class="code" href="ecat63ml_8c.html#a2d931d7e3d4e21159731b7c480c209b9">ecat63EmptyMatlist</a>(&amp;mlist); fclose(fp); <span class="keywordflow">return</span> ret;}
<a name="l01512"></a>01512   <span class="comment">/* And allocate memory for the raw data blocks */</span>
<a name="l01513"></a>01513   <span class="keywordflow">if</span>(<a class="code" href="img_8h.html#a0d66ed136e5992b7b00ce6f43bad1439">IMG_TEST</a>&gt;6) printf(<span class="stringliteral">&quot;allocating memory for %d blocks\n&quot;</span>, blkNr);
<a name="l01514"></a>01514   mdata=(<span class="keywordtype">char</span>*)malloc(blkNr*<a class="code" href="ecat63_8h.html#abdf75c7aade8a596594e8e7ce8b16872">MatBLKSIZE</a>);
<a name="l01515"></a>01515   <span class="keywordflow">if</span>(mdata==NULL) {fclose(fp); <a class="code" href="ecat63ml_8c.html#a2d931d7e3d4e21159731b7c480c209b9">ecat63EmptyMatlist</a>(&amp;mlist); <span class="keywordflow">return</span> <a class="code" href="img_8h.html#a06fc87d81c62e9abb8790b6e5713c55bafbe470f6663c748e405bf509d2bb57bb">STATUS_NOMEMORY</a>;}
<a name="l01516"></a>01516 
<a name="l01517"></a>01517   <span class="comment">/* Read all matrices that belong to the required frame */</span>
<a name="l01518"></a>01518   ret=0; seqplane=-1;
<a name="l01519"></a>01519   <span class="keywordflow">for</span>(m=0; m&lt;mlist.<a class="code" href="structMATRIXLIST.html#a7fcfb983a42851d8562084ddde1f9fcd">matrixNr</a>; m++) <span class="keywordflow">if</span>(mlist.<a class="code" href="structMATRIXLIST.html#a42676745379d69392b07b5c29626f6f9">matdir</a>[m].<a class="code" href="structMatDir.html#a9096ac571f3dabee56894b264552f65f">matstat</a>==1) {
<a name="l01520"></a>01520     <span class="comment">/* get frame and plane */</span>
<a name="l01521"></a>01521     <a class="code" href="ecat63ml_8c.html#af566384e63f743897f71d8ee41b3b292">mat_numdoc</a>(mlist.<a class="code" href="structMATRIXLIST.html#a42676745379d69392b07b5c29626f6f9">matdir</a>[m].<a class="code" href="structMatDir.html#aeb0291ec1f5ac237c1e587ed3d23b1bb">matnum</a>, &amp;matval);
<a name="l01522"></a>01522     plane=matval.<a class="code" href="structMatval.html#ac87d088d281d918936f987cd19148069">plane</a>;
<a name="l01523"></a>01523     <span class="keywordflow">if</span>(main_header.<a class="code" href="structecat63__mainheader.html#a01ad1f4be366fb3ad82da61022e9761c">num_frames</a>&gt;=main_header.<a class="code" href="structecat63__mainheader.html#a5038021b6504d93e304931a95af64746">num_gates</a>) frame=matval.<a class="code" href="structMatval.html#a514081d81e26c20a377de4e945499446">frame</a>;
<a name="l01524"></a>01524     <span class="keywordflow">else</span> frame=matval.<a class="code" href="structMatval.html#ab317865439d3423f362a3094dd65fc18">gate</a>; <span class="comment">/* printf(&quot;frame=%d plane=%d\n&quot;, frame, plane); */</span>
<a name="l01525"></a>01525     <span class="keywordflow">if</span>(frame!=frame_to_read) <span class="keywordflow">continue</span>; <span class="comment">/* do not process other frames */</span>
<a name="l01526"></a>01526     seqplane++; 
<a name="l01527"></a>01527     <span class="keywordflow">if</span>(img-&gt;<a class="code" href="structIMG.html#a78e3164d578cf4a570e930dceb10fb51">planeNumber</a>[seqplane]&lt;1) {
<a name="l01528"></a>01528       img-&gt;<a class="code" href="structIMG.html#a78e3164d578cf4a570e930dceb10fb51">planeNumber</a>[seqplane]=plane;
<a name="l01529"></a>01529     } <span class="keywordflow">else</span> <span class="keywordflow">if</span>(img-&gt;<a class="code" href="structIMG.html#a78e3164d578cf4a570e930dceb10fb51">planeNumber</a>[seqplane]!=plane) {
<a name="l01530"></a>01530       fclose(fp); <a class="code" href="ecat63ml_8c.html#a2d931d7e3d4e21159731b7c480c209b9">ecat63EmptyMatlist</a>(&amp;mlist); free(mdata);
<a name="l01531"></a>01531       <span class="keywordflow">return</span> <a class="code" href="img_8h.html#a06fc87d81c62e9abb8790b6e5713c55bad6498890650ae8d01e69f43514eb4fed">STATUS_MISSINGMATRIX</a>;    
<a name="l01532"></a>01532     }
<a name="l01533"></a>01533     
<a name="l01534"></a>01534     <span class="comment">/* Read the subheader */</span>
<a name="l01535"></a>01535     <span class="keywordflow">if</span>(<a class="code" href="img_8h.html#a0d66ed136e5992b7b00ce6f43bad1439">IMG_TEST</a>&gt;4) printf(<span class="stringliteral">&quot;reading subheader for matrix %d,%d\n&quot;</span>, frame, plane);
<a name="l01536"></a>01536     <span class="keywordflow">if</span>(main_header.<a class="code" href="structecat63__mainheader.html#aeb7fd4a6b107a810dcff5d82b6f58440">file_type</a>==<a class="code" href="ecat63_8h.html#aaf5f1adfda44941c4bf4de3e71219e4a">IMAGE_DATA</a>) {
<a name="l01537"></a>01537       ret=<a class="code" href="ecat63r_8c.html#adc36293804c18dd15771c61500841b7c">ecat63ReadImageheader</a>(fp, mlist.<a class="code" href="structMATRIXLIST.html#a42676745379d69392b07b5c29626f6f9">matdir</a>[m].<a class="code" href="structMatDir.html#af91ca45aca86269901b03480b5b6d741">strtblk</a>, &amp;image_header);
<a name="l01538"></a>01538       scale=image_header.<a class="code" href="structecat63__imageheader.html#ac4ff92a4d0a9b55e3647bfb45af9d381">quant_scale</a>;
<a name="l01539"></a>01539       <span class="keywordflow">if</span>(image_header.<a class="code" href="structecat63__imageheader.html#aa50b6a76225241de1056e26de450fb1c">ecat_calibration_fctr</a>&gt;0.0
<a name="l01540"></a>01540          &amp;&amp; fabs(main_header.<a class="code" href="structecat63__mainheader.html#ab8dd149fc8b61f8ccd115799e419f7e1">calibration_factor</a>/image_header.<a class="code" href="structecat63__imageheader.html#aa50b6a76225241de1056e26de450fb1c">ecat_calibration_fctr</a>-1.0)&gt;0.0001)
<a name="l01541"></a>01541         scale*=image_header.<a class="code" href="structecat63__imageheader.html#aa50b6a76225241de1056e26de450fb1c">ecat_calibration_fctr</a>;
<a name="l01542"></a>01542       local_data_type=image_header.<a class="code" href="structecat63__imageheader.html#a00da8baaaefa0ca83e0c12636b298196">data_type</a>;
<a name="l01543"></a>01543       img-&gt;<a class="code" href="structIMG.html#a8ff22fc209b6f44ad14341c8644788d2">start</a>[frame_index]=image_header.<a class="code" href="structecat63__imageheader.html#a14bdbc2c5ce62d9ed0c57514b02f8f0e">frame_start_time</a>/1000.;
<a name="l01544"></a>01544       img-&gt;<a class="code" href="structIMG.html#aa2b629a51ca62bcafad0a66d32e1ca8b">end</a>[frame_index]=img-&gt;<a class="code" href="structIMG.html#a8ff22fc209b6f44ad14341c8644788d2">start</a>[frame_index]+image_header.<a class="code" href="structecat63__imageheader.html#ae4fba67f8fb4e7f72f4d74b215b39058">frame_duration</a>/1000.;
<a name="l01545"></a>01545       img-&gt;<a class="code" href="structIMG.html#af7c69142be89fac081e7f8bc354b14c8">mid</a>[frame_index]=0.5*(img-&gt;<a class="code" href="structIMG.html#a8ff22fc209b6f44ad14341c8644788d2">start</a>[frame_index]+img-&gt;<a class="code" href="structIMG.html#aa2b629a51ca62bcafad0a66d32e1ca8b">end</a>[frame_index]);
<a name="l01546"></a>01546       <span class="keywordflow">if</span>(image_header.<a class="code" href="structecat63__imageheader.html#a46ec10bffd9ad4bd54271b68022bd41c">decay_corr_fctr</a>&gt;1.0)
<a name="l01547"></a>01547         img-&gt;<a class="code" href="structIMG.html#abf0ad6e681d08c3248dbd9837afa9973">decayCorrFactor</a>[frame_index]=image_header.<a class="code" href="structecat63__imageheader.html#a46ec10bffd9ad4bd54271b68022bd41c">decay_corr_fctr</a>;
<a name="l01548"></a>01548     } <span class="keywordflow">else</span> <span class="keywordflow">if</span>(main_header.<a class="code" href="structecat63__mainheader.html#aeb7fd4a6b107a810dcff5d82b6f58440">file_type</a>==<a class="code" href="ecat63_8h.html#a7140d943b6f40ad3c4bdab5a2073c2f6">RAW_DATA</a>) {
<a name="l01549"></a>01549       ret=<a class="code" href="ecat63r_8c.html#a811c9c52c52f1c749ee6cb0f7a51f884">ecat63ReadScanheader</a>(fp, mlist.<a class="code" href="structMATRIXLIST.html#a42676745379d69392b07b5c29626f6f9">matdir</a>[m].<a class="code" href="structMatDir.html#af91ca45aca86269901b03480b5b6d741">strtblk</a>, &amp;scan_header);
<a name="l01550"></a>01550       scale=scan_header.<a class="code" href="structecat63__scanheader.html#acfabab41eaa593a0625a43057bd9b558">scale_factor</a>;
<a name="l01551"></a>01551       <span class="keywordflow">if</span>(scan_header.<a class="code" href="structecat63__scanheader.html#a3077aca1fa9f9b64c57f4b6eb19780fb">loss_correction_fctr</a>&gt;0.0) scale*=scan_header.<a class="code" href="structecat63__scanheader.html#a3077aca1fa9f9b64c57f4b6eb19780fb">loss_correction_fctr</a>;
<a name="l01552"></a>01552       local_data_type=scan_header.<a class="code" href="structecat63__scanheader.html#ad1ee12caf8404e9237c9b14d95711109">data_type</a>;
<a name="l01553"></a>01553       img-&gt;<a class="code" href="structIMG.html#a8ff22fc209b6f44ad14341c8644788d2">start</a>[frame_index]=scan_header.<a class="code" href="structecat63__scanheader.html#aa7214f91108a9d7a5bec6f0edbe3493d">frame_start_time</a>/1000.;
<a name="l01554"></a>01554       img-&gt;<a class="code" href="structIMG.html#aa2b629a51ca62bcafad0a66d32e1ca8b">end</a>[frame_index]=img-&gt;<a class="code" href="structIMG.html#a8ff22fc209b6f44ad14341c8644788d2">start</a>[frame_index]+scan_header.<a class="code" href="structecat63__scanheader.html#a253426410960e4047acfb591c24e179b">frame_duration</a>/1000.;
<a name="l01555"></a>01555       img-&gt;<a class="code" href="structIMG.html#af7c69142be89fac081e7f8bc354b14c8">mid</a>[frame_index]=0.5*(img-&gt;<a class="code" href="structIMG.html#a8ff22fc209b6f44ad14341c8644788d2">start</a>[frame_index]+img-&gt;<a class="code" href="structIMG.html#aa2b629a51ca62bcafad0a66d32e1ca8b">end</a>[frame_index]);
<a name="l01556"></a>01556       img-&gt;<a class="code" href="structIMG.html#a399dae5b27dda8d5e1b0e96c885513e4">sampleDistance</a>=10.0*scan_header.<a class="code" href="structecat63__scanheader.html#acb676ed22b052fbaa07bd044263ac279">sample_distance</a>;
<a name="l01557"></a>01557       img-&gt;<a class="code" href="structIMG.html#a76d63a001b8569d9f80ccb325e064be1">prompts</a>[frame_index]=(float)scan_header.<a class="code" href="structecat63__scanheader.html#a28b007d345ada719bb886fd7a2683d76">prompts</a>;
<a name="l01558"></a>01558       img-&gt;<a class="code" href="structIMG.html#ae47ebbbdc0c308f473fec801a2df513d">randoms</a>[frame_index]=(<span class="keywordtype">float</span>)scan_header.<a class="code" href="structecat63__scanheader.html#ad0a2468779aec56e8d45ca685834eb16">delayed</a>;
<a name="l01559"></a>01559     } <span class="keywordflow">else</span> <span class="keywordflow">if</span>(main_header.<a class="code" href="structecat63__mainheader.html#aeb7fd4a6b107a810dcff5d82b6f58440">file_type</a>==<a class="code" href="ecat63_8h.html#a23271440af335f92b16c81abdff7818a">ATTN_DATA</a>) {
<a name="l01560"></a>01560       ret=<a class="code" href="ecat63r_8c.html#ac9c08bd1e03ddc4f4a8c83a5ea198e05">ecat63ReadAttnheader</a>(fp, mlist.<a class="code" href="structMATRIXLIST.html#a42676745379d69392b07b5c29626f6f9">matdir</a>[m].<a class="code" href="structMatDir.html#af91ca45aca86269901b03480b5b6d741">strtblk</a>, &amp;attn_header);
<a name="l01561"></a>01561       scale=attn_header.<a class="code" href="structecat63__attnheader.html#a649891350c3b30214f43ca2d640a0e47">scale_factor</a>;
<a name="l01562"></a>01562       local_data_type=attn_header.<a class="code" href="structecat63__attnheader.html#ac5bea9d6b3dae0b4c87d5e66a0d2006e">data_type</a>;
<a name="l01563"></a>01563     } <span class="keywordflow">else</span> <span class="keywordflow">if</span>(main_header.<a class="code" href="structecat63__mainheader.html#aeb7fd4a6b107a810dcff5d82b6f58440">file_type</a>==<a class="code" href="ecat63_8h.html#a978e691d4d6416577705c5c654096e02">NORM_DATA</a>) {
<a name="l01564"></a>01564       ret=<a class="code" href="ecat63r_8c.html#a6a169297491f0f8a734247467cfb2b89">ecat63ReadNormheader</a>(fp, mlist.<a class="code" href="structMATRIXLIST.html#a42676745379d69392b07b5c29626f6f9">matdir</a>[m].<a class="code" href="structMatDir.html#af91ca45aca86269901b03480b5b6d741">strtblk</a>, &amp;norm_header);
<a name="l01565"></a>01565       scale=norm_header.<a class="code" href="structecat63__normheader.html#a914977ee68c14326a4551abae57fc9ab">scale_factor</a>;
<a name="l01566"></a>01566       local_data_type=norm_header.<a class="code" href="structecat63__normheader.html#ae7d4136070d36e9edbe684a80e39b942">data_type</a>;
<a name="l01567"></a>01567     } <span class="keywordflow">else</span>
<a name="l01568"></a>01568       img-&gt;<a class="code" href="structIMG.html#a780bf2ffdee9e977a3a51febb7696701">_dataType</a>=-1;
<a name="l01569"></a>01569     <span class="keywordflow">if</span>(ret) {
<a name="l01570"></a>01570       <a class="code" href="ecat63ml_8c.html#a2d931d7e3d4e21159731b7c480c209b9">ecat63EmptyMatlist</a>(&amp;mlist); free(mdata); fclose(fp);
<a name="l01571"></a>01571       <span class="keywordflow">return</span> <a class="code" href="img_8h.html#a06fc87d81c62e9abb8790b6e5713c55bae6ad5f97cf86fa7686fd12961e4ccdf4">STATUS_NOSUBHEADER</a>;
<a name="l01572"></a>01572     }
<a name="l01573"></a>01573     <span class="keywordflow">if</span>(main_header.<a class="code" href="structecat63__mainheader.html#ab8dd149fc8b61f8ccd115799e419f7e1">calibration_factor</a>&gt;0.0) scale*=main_header.<a class="code" href="structecat63__mainheader.html#ab8dd149fc8b61f8ccd115799e419f7e1">calibration_factor</a>;
<a name="l01574"></a>01574     <span class="keywordflow">if</span>(<a class="code" href="img_8h.html#a0d66ed136e5992b7b00ce6f43bad1439">IMG_TEST</a>&gt;6) printf(<span class="stringliteral">&quot;scale=%e datatype=%d\n&quot;</span>, scale, img-&gt;<a class="code" href="structIMG.html#a780bf2ffdee9e977a3a51febb7696701">_dataType</a>);
<a name="l01575"></a>01575     <span class="comment">/* Read the pixel data */</span>
<a name="l01576"></a>01576     <span class="keywordflow">if</span>(<a class="code" href="img_8h.html#a0d66ed136e5992b7b00ce6f43bad1439">IMG_TEST</a>&gt;4) printf(<span class="stringliteral">&quot;reading matrix data\n&quot;</span>);
<a name="l01577"></a>01577     ret=<a class="code" href="ecat63r_8c.html#a7f3456ddf0f774026d462df66bf1210b">ecat63ReadMatdata</a>(fp, mlist.<a class="code" href="structMATRIXLIST.html#a42676745379d69392b07b5c29626f6f9">matdir</a>[m].<a class="code" href="structMatDir.html#af91ca45aca86269901b03480b5b6d741">strtblk</a>+1,
<a name="l01578"></a>01578          mlist.<a class="code" href="structMATRIXLIST.html#a42676745379d69392b07b5c29626f6f9">matdir</a>[m].<a class="code" href="structMatDir.html#ad1781958d48d68431d0c3b630093994f">endblk</a>-mlist.<a class="code" href="structMATRIXLIST.html#a42676745379d69392b07b5c29626f6f9">matdir</a>[m].<a class="code" href="structMatDir.html#af91ca45aca86269901b03480b5b6d741">strtblk</a>,
<a name="l01579"></a>01579          mdata, local_data_type);
<a name="l01580"></a>01580     <span class="keywordflow">if</span>(ret) {
<a name="l01581"></a>01581       <a class="code" href="ecat63ml_8c.html#a2d931d7e3d4e21159731b7c480c209b9">ecat63EmptyMatlist</a>(&amp;mlist); free(mdata); fclose(fp);
<a name="l01582"></a>01582       <span class="keywordflow">return</span> <a class="code" href="img_8h.html#a06fc87d81c62e9abb8790b6e5713c55bad6498890650ae8d01e69f43514eb4fed">STATUS_MISSINGMATRIX</a>;
<a name="l01583"></a>01583     }
<a name="l01584"></a>01584     <span class="keywordflow">if</span>(<a class="code" href="img_8h.html#a0d66ed136e5992b7b00ce6f43bad1439">IMG_TEST</a>&gt;4) printf(<span class="stringliteral">&quot;converting matrix data to floats\n&quot;</span>);
<a name="l01585"></a>01585     <span class="keywordflow">if</span>(local_data_type==<a class="code" href="ecat63_8h.html#a8e1f9f0fd436e762641718456852ee80">BYTE_TYPE</a>) {
<a name="l01586"></a>01586       <span class="keywordflow">for</span>(yi=0, mptr=mdata; yi&lt;img-&gt;<a class="code" href="structIMG.html#aa17e87812503d3c142f31c08abcbf79d">dimy</a>; yi++)
<a name="l01587"></a>01587         <span class="keywordflow">for</span>(xi=0; xi&lt;img-&gt;<a class="code" href="structIMG.html#a0818b82059710627a94282a793ff7030">dimx</a>; xi++, mptr++) {
<a name="l01588"></a>01588           img-&gt;<a class="code" href="structIMG.html#a43e2c98dc0728731601a76abd51bb935">m</a>[seqplane][yi][xi][frame_index]=scale*(float)(*mptr);
<a name="l01589"></a>01589         }
<a name="l01590"></a>01590     } <span class="keywordflow">else</span> <span class="keywordflow">if</span>(local_data_type==<a class="code" href="ecat63_8h.html#ab6ed0aaf03f063c606604089878ed91a">VAX_I2</a> || local_data_type==<a class="code" href="ecat63_8h.html#aebd1500a1497c6489f1820442db218d2">SUN_I2</a>) {
<a name="l01591"></a>01591       <span class="keywordflow">for</span>(yi=0, mptr=mdata; yi&lt;img-&gt;<a class="code" href="structIMG.html#aa17e87812503d3c142f31c08abcbf79d">dimy</a>; yi++)
<a name="l01592"></a>01592         <span class="keywordflow">for</span>(xi=0; xi&lt;img-&gt;<a class="code" href="structIMG.html#a0818b82059710627a94282a793ff7030">dimx</a>; xi++, mptr+=2) {
<a name="l01593"></a>01593           sptr=(<span class="keywordtype">short</span> <span class="keywordtype">int</span>*)mptr;
<a name="l01594"></a>01594           img-&gt;<a class="code" href="structIMG.html#a43e2c98dc0728731601a76abd51bb935">m</a>[seqplane][yi][xi][frame_index]=scale*(float)(*sptr);
<a name="l01595"></a>01595         }
<a name="l01596"></a>01596     } <span class="keywordflow">else</span> <span class="keywordflow">if</span>(local_data_type==<a class="code" href="ecat63_8h.html#a91402eabd36b6383a537f5ba993e1d13">VAX_I4</a> || local_data_type==<a class="code" href="ecat63_8h.html#a105892e015b38ae62e69684acf6df31d">SUN_I4</a>) {
<a name="l01597"></a>01597       <span class="keywordflow">for</span>(yi=0, mptr=mdata; yi&lt;img-&gt;<a class="code" href="structIMG.html#aa17e87812503d3c142f31c08abcbf79d">dimy</a>; yi++)
<a name="l01598"></a>01598         <span class="keywordflow">for</span>(xi=0; xi&lt;img-&gt;<a class="code" href="structIMG.html#a0818b82059710627a94282a793ff7030">dimx</a>; xi++, mptr+=4) {
<a name="l01599"></a>01599           iptr=(<span class="keywordtype">int</span>*)mptr;
<a name="l01600"></a>01600           img-&gt;<a class="code" href="structIMG.html#a43e2c98dc0728731601a76abd51bb935">m</a>[seqplane][yi][xi][frame_index]=1.0; <span class="comment">/* scale*(float)(*iptr); */</span>
<a name="l01601"></a>01601         }
<a name="l01602"></a>01602     } <span class="keywordflow">else</span> <span class="keywordflow">if</span>(local_data_type==<a class="code" href="ecat63_8h.html#a43d671e0f827418673872adcd63418c4">VAX_R4</a> || local_data_type==<a class="code" href="ecat63_8h.html#a6001c489ee0296a6dca313ee3bfe4412">IEEE_R4</a>) {
<a name="l01603"></a>01603       <span class="keywordflow">for</span>(yi=0, mptr=mdata; yi&lt;img-&gt;<a class="code" href="structIMG.html#aa17e87812503d3c142f31c08abcbf79d">dimy</a>; yi++)
<a name="l01604"></a>01604         <span class="keywordflow">for</span>(xi=0; xi&lt;img-&gt;<a class="code" href="structIMG.html#a0818b82059710627a94282a793ff7030">dimx</a>; xi++, mptr+=4) {
<a name="l01605"></a>01605           memcpy(&amp;img-&gt;<a class="code" href="structIMG.html#a43e2c98dc0728731601a76abd51bb935">m</a>[seqplane][yi][xi][frame_index], mptr, 4);
<a name="l01606"></a>01606           img-&gt;<a class="code" href="structIMG.html#a43e2c98dc0728731601a76abd51bb935">m</a>[seqplane][yi][xi][frame_index]*=scale;
<a name="l01607"></a>01607         }
<a name="l01608"></a>01608     }
<a name="l01609"></a>01609   } <span class="comment">/* next matrix */</span>
<a name="l01610"></a>01610   <span class="keywordflow">if</span>(<a class="code" href="img_8h.html#a0d66ed136e5992b7b00ce6f43bad1439">IMG_TEST</a>&gt;3) printf(<span class="stringliteral">&quot;end of matrices.\n&quot;</span>);
<a name="l01611"></a>01611   
<a name="l01612"></a>01612   free(mdata);
<a name="l01613"></a>01613   <a class="code" href="ecat63ml_8c.html#a2d931d7e3d4e21159731b7c480c209b9">ecat63EmptyMatlist</a>(&amp;mlist); 
<a name="l01614"></a>01614   fclose(fp);
<a name="l01615"></a>01615 
<a name="l01616"></a>01616   <span class="comment">/* seqplane is &lt;0 only if this frame did not exist at all; return -1 */</span>
<a name="l01617"></a>01617   <span class="keywordflow">if</span>(<a class="code" href="img_8h.html#a0d66ed136e5992b7b00ce6f43bad1439">IMG_TEST</a>&gt;4) printf(<span class="stringliteral">&quot;last_seqplane := %d.\n&quot;</span>, seqplane);
<a name="l01618"></a>01618   <span class="keywordflow">if</span>(seqplane&lt;0) {<a class="code" href="img_8c.html#ad124d2d496934d677156cc8779a1e567">imgSetStatus</a>(img, <a class="code" href="img_8h.html#a06fc87d81c62e9abb8790b6e5713c55babe9c1bcf366cd905b79148ba91b34756">STATUS_NOMATRIX</a>); <span class="keywordflow">return</span> <a class="code" href="img_8h.html#a06fc87d81c62e9abb8790b6e5713c55babe9c1bcf366cd905b79148ba91b34756">STATUS_NOMATRIX</a>;}
<a name="l01619"></a>01619 
<a name="l01620"></a>01620   <span class="comment">/* check that correct number of planes was read */</span>
<a name="l01621"></a>01621   <span class="keywordflow">if</span>(seqplane+1 != img-&gt;<a class="code" href="structIMG.html#a9c04780b47e6a627a2b700b76352c3fc">dimz</a>) {
<a name="l01622"></a>01622     <a class="code" href="img_8c.html#ad124d2d496934d677156cc8779a1e567">imgSetStatus</a>(img, <a class="code" href="img_8h.html#a06fc87d81c62e9abb8790b6e5713c55bad6498890650ae8d01e69f43514eb4fed">STATUS_MISSINGMATRIX</a>);
<a name="l01623"></a>01623     <span class="keywordflow">return</span> <a class="code" href="img_8h.html#a06fc87d81c62e9abb8790b6e5713c55bad6498890650ae8d01e69f43514eb4fed">STATUS_MISSINGMATRIX</a>;
<a name="l01624"></a>01624   }
<a name="l01625"></a>01625 
<a name="l01626"></a>01626   <span class="comment">/* For saving IMG data, only 2-byte VAX data types are allowed, so change it now */</span>
<a name="l01627"></a>01627   <span class="keywordflow">if</span>(img-&gt;<a class="code" href="structIMG.html#a780bf2ffdee9e977a3a51febb7696701">_dataType</a>==<a class="code" href="ecat63_8h.html#a91402eabd36b6383a537f5ba993e1d13">VAX_I4</a> || img-&gt;<a class="code" href="structIMG.html#a780bf2ffdee9e977a3a51febb7696701">_dataType</a>==<a class="code" href="ecat63_8h.html#a43d671e0f827418673872adcd63418c4">VAX_R4</a>) img-&gt;<a class="code" href="structIMG.html#a780bf2ffdee9e977a3a51febb7696701">_dataType</a>=<a class="code" href="ecat63_8h.html#ab6ed0aaf03f063c606604089878ed91a">VAX_I2</a>;
<a name="l01628"></a>01628 
<a name="l01629"></a>01629   <span class="comment">/* All went well */</span>
<a name="l01630"></a>01630   <a class="code" href="img_8c.html#ad124d2d496934d677156cc8779a1e567">imgSetStatus</a>(img, <a class="code" href="img_8h.html#a06fc87d81c62e9abb8790b6e5713c55ba7e4a42e3b6dd63708c64cf3db6f69566">STATUS_OK</a>);
<a name="l01631"></a>01631   <span class="keywordflow">return</span> <a class="code" href="img_8h.html#a06fc87d81c62e9abb8790b6e5713c55ba7e4a42e3b6dd63708c64cf3db6f69566">STATUS_OK</a>;
<a name="l01632"></a>01632 }
<a name="l01633"></a>01633 <span class="comment">/*****************************************************************************/</span>
<a name="l01634"></a>01634 
<a name="l01635"></a>01635 <span class="comment">/*****************************************************************************/</span>
<a name="l01656"></a><a class="code" href="imgfile_8h.html#a754e860541649ecc46986ba3d318e435">01656</a> <span class="keywordtype">int</span> <a class="code" href="img__e63_8c.html#a754e860541649ecc46986ba3d318e435">imgWriteEcat63Frame</a>(<span class="keyword">const</span> <span class="keywordtype">char</span> *fname, <span class="keywordtype">int</span> frame_to_write, <a class="code" href="structIMG.html">IMG</a> *img, <span class="keywordtype">int</span> frame_index) {
<a name="l01657"></a>01657   <a class="code" href="structIMG.html">IMG</a> test_img;
<a name="l01658"></a>01658   <span class="keywordtype">int</span> ret=0, pxlNr, zi, xi, yi, matrixId;
<a name="l01659"></a>01659   <a class="code" href="structecat63__mainheader.html">ECAT63_mainheader</a>   main_header;
<a name="l01660"></a>01660   <a class="code" href="structecat63__imageheader.html">ECAT63_imageheader</a>  image_header;
<a name="l01661"></a>01661   <a class="code" href="structecat63__scanheader.html">ECAT63_scanheader</a>   scan_header;
<a name="l01662"></a>01662   <span class="keywordtype">void</span> *sub_header=NULL;
<a name="l01663"></a>01663   FILE *fp;
<a name="l01664"></a>01664   <span class="keywordtype">float</span> *fdata=NULL, *fptr;
<a name="l01665"></a>01665 
<a name="l01666"></a>01666 
<a name="l01667"></a>01667   <span class="keywordflow">if</span>(<a class="code" href="img_8h.html#a0d66ed136e5992b7b00ce6f43bad1439">IMG_TEST</a>) printf(<span class="stringliteral">&quot;\nimgWriteEcat63Frame(%s, %d, *img, %d)\n&quot;</span>,
<a name="l01668"></a>01668     fname, frame_to_write, frame_index);
<a name="l01669"></a>01669   <span class="keywordflow">if</span>(<a class="code" href="img_8h.html#a0d66ed136e5992b7b00ce6f43bad1439">IMG_TEST</a>&gt;1) <a class="code" href="ecat63_8h.html#a31112b67a89269c5bed48d48ce2957ed">ECAT63_TEST</a>=<a class="code" href="img_8h.html#a0d66ed136e5992b7b00ce6f43bad1439">IMG_TEST</a>-1;
<a name="l01670"></a>01670     
<a name="l01671"></a>01671   <span class="comment">/*</span>
<a name="l01672"></a>01672 <span class="comment">   *  Check the input </span>
<a name="l01673"></a>01673 <span class="comment">   */</span>
<a name="l01674"></a>01674   <span class="keywordflow">if</span>(fname==NULL) <span class="keywordflow">return</span> <a class="code" href="img_8h.html#a06fc87d81c62e9abb8790b6e5713c55baf8f3d89c25483639f6cbce4f6b08c1f8">STATUS_FAULT</a>;
<a name="l01675"></a>01675   <span class="keywordflow">if</span>(img==NULL) <span class="keywordflow">return</span> <a class="code" href="img_8h.html#a06fc87d81c62e9abb8790b6e5713c55baf8f3d89c25483639f6cbce4f6b08c1f8">STATUS_FAULT</a>;
<a name="l01676"></a>01676   <span class="keywordflow">if</span>(img-&gt;<a class="code" href="structIMG.html#a5b8bdc61088df4a3c3f89c31895b14a4">status</a>!=<a class="code" href="img_8h.html#a3117b1b0649d3761dcda1395202129e5">IMG_STATUS_OCCUPIED</a>) <span class="keywordflow">return</span> <a class="code" href="img_8h.html#a06fc87d81c62e9abb8790b6e5713c55baf8f3d89c25483639f6cbce4f6b08c1f8">STATUS_FAULT</a>;
<a name="l01677"></a>01677   <span class="keywordflow">if</span>(frame_to_write&lt;0) <span class="keywordflow">return</span> <a class="code" href="img_8h.html#a06fc87d81c62e9abb8790b6e5713c55baf8f3d89c25483639f6cbce4f6b08c1f8">STATUS_FAULT</a>;
<a name="l01678"></a>01678   <span class="keywordflow">if</span>(frame_index&lt;0 || frame_index&gt;=img-&gt;<a class="code" href="structIMG.html#a77605d4aa64b86294590c79e9a761b15">dimt</a>) <span class="keywordflow">return</span> <a class="code" href="img_8h.html#a06fc87d81c62e9abb8790b6e5713c55baf8f3d89c25483639f6cbce4f6b08c1f8">STATUS_FAULT</a>;
<a name="l01679"></a>01679   <span class="keywordflow">if</span>(img-&gt;<a class="code" href="structIMG.html#a5e25c84c23270f974f1eb7c32a01bac7">_fileFormat</a>!=<a class="code" href="img_8h.html#a7d502c1293f35b4392badbb9491ee95e">IMG_E63</a>) <span class="keywordflow">return</span> <a class="code" href="img_8h.html#a06fc87d81c62e9abb8790b6e5713c55baf8f3d89c25483639f6cbce4f6b08c1f8">STATUS_FAULT</a>;
<a name="l01680"></a>01680 
<a name="l01681"></a>01681   <span class="comment">/* Initiate headers */</span>
<a name="l01682"></a>01682   memset(&amp;main_header, 0, <span class="keyword">sizeof</span>(<a class="code" href="structecat63__mainheader.html">ECAT63_mainheader</a>));
<a name="l01683"></a>01683   memset(&amp;image_header,0, <span class="keyword">sizeof</span>(<a class="code" href="structecat63__imageheader.html">ECAT63_imageheader</a>));
<a name="l01684"></a>01684   memset(&amp;scan_header, 0, <span class="keyword">sizeof</span>(<a class="code" href="structecat63__scanheader.html">ECAT63_scanheader</a>));
<a name="l01685"></a>01685   <a class="code" href="img_8c.html#af95041292a0f9e4a82a10b49a074a95c">imgInit</a>(&amp;test_img);
<a name="l01686"></a>01686 
<a name="l01687"></a>01687 
<a name="l01688"></a>01688   <span class="comment">/*</span>
<a name="l01689"></a>01689 <span class="comment">   *  If file does not exist, then create it with new mainheader,</span>
<a name="l01690"></a>01690 <span class="comment">   *  and if it does exist, then read and check header information.</span>
<a name="l01691"></a>01691 <span class="comment">   *  Create or edit mainheader to contain correct frame nr.   </span>
<a name="l01692"></a>01692 <span class="comment">   *  In any case, leave file pointer open for write.   </span>
<a name="l01693"></a>01693 <span class="comment">   */</span>
<a name="l01694"></a>01694   <span class="keywordflow">if</span>(access(fname, 0) == -1) { <span class="comment">/* file does not exist*/</span>
<a name="l01695"></a>01695 
<a name="l01696"></a>01696     <span class="comment">/* Set main header */</span>
<a name="l01697"></a>01697     <a class="code" href="img__e63_8c.html#aea4f0eef296e7375e00c5695cfa2ecb3">imgSetEcat63MHeader</a>(img, &amp;main_header);
<a name="l01698"></a>01698     <span class="keywordflow">if</span>(<a class="code" href="img_8h.html#a0d66ed136e5992b7b00ce6f43bad1439">IMG_TEST</a>&gt;2) {
<a name="l01699"></a>01699       <a class="code" href="ecat63p_8c.html#a129d5f8c3d6135b9934cebc54d27bc47">ecat63PrintMainheader</a>(&amp;main_header, stdout);
<a name="l01700"></a>01700     }
<a name="l01701"></a>01701     <span class="keywordflow">if</span>(frame_to_write==0) frame_to_write=1;
<a name="l01702"></a>01702     main_header.<a class="code" href="structecat63__mainheader.html#a01ad1f4be366fb3ad82da61022e9761c">num_frames</a>=frame_to_write;
<a name="l01703"></a>01703 
<a name="l01704"></a>01704     <span class="comment">/* Open file, write main header and initiate matrix list */</span>
<a name="l01705"></a>01705     fp=<a class="code" href="ecat63w_8c.html#aa9545a4a59002bf59a77478977f479eb">ecat63Create</a>(fname, &amp;main_header); <span class="keywordflow">if</span>(fp==NULL) <span class="keywordflow">return</span> <a class="code" href="img_8h.html#a06fc87d81c62e9abb8790b6e5713c55ba89d8cfdc7190aa78887b412e66e292e4">STATUS_NOWRITEPERM</a>;
<a name="l01706"></a>01706 
<a name="l01707"></a>01707   } <span class="keywordflow">else</span> { <span class="comment">/* file exists*/</span>
<a name="l01708"></a>01708   
<a name="l01709"></a>01709     <span class="comment">/* Read header information for checking */</span>
<a name="l01710"></a>01710     ret=<a class="code" href="img__e63_8c.html#ad2488060702b34b8ba7269131304905d">imgReadEcat63Header</a>(fname, &amp;test_img); <span class="keywordflow">if</span>(ret!=0) <span class="keywordflow">return</span> ret;
<a name="l01711"></a>01711     <span class="comment">/* Check that file format is the same */</span>
<a name="l01712"></a>01712     <span class="keywordflow">if</span>(img-&gt;<a class="code" href="structIMG.html#a5e25c84c23270f974f1eb7c32a01bac7">_fileFormat</a>!=test_img.<a class="code" href="structIMG.html#a5e25c84c23270f974f1eb7c32a01bac7">_fileFormat</a> || img-&gt;<a class="code" href="structIMG.html#a0d9199e1c3c4bd94d56eb30e421b309c">type</a>!=test_img.<a class="code" href="structIMG.html#a0d9199e1c3c4bd94d56eb30e421b309c">type</a>)
<a name="l01713"></a>01713       <span class="keywordflow">return</span> <a class="code" href="img_8h.html#a06fc87d81c62e9abb8790b6e5713c55ba8860e85936fb99f4d0f248a9ca7fd4f7">STATUS_WRONGFILETYPE</a>;
<a name="l01714"></a>01714     <span class="comment">/* Check that matrix sizes are the same */</span>
<a name="l01715"></a>01715     <span class="keywordflow">if</span>(img-&gt;<a class="code" href="structIMG.html#a9c04780b47e6a627a2b700b76352c3fc">dimz</a>!=test_img.<a class="code" href="structIMG.html#a9c04780b47e6a627a2b700b76352c3fc">dimz</a> || img-&gt;<a class="code" href="structIMG.html#a0818b82059710627a94282a793ff7030">dimx</a>!=test_img.<a class="code" href="structIMG.html#a0818b82059710627a94282a793ff7030">dimx</a> ||
<a name="l01716"></a>01716        img-&gt;<a class="code" href="structIMG.html#aa17e87812503d3c142f31c08abcbf79d">dimy</a>!=test_img.<a class="code" href="structIMG.html#aa17e87812503d3c142f31c08abcbf79d">dimy</a>)
<a name="l01717"></a>01717       <span class="keywordflow">return</span> <a class="code" href="img_8h.html#a06fc87d81c62e9abb8790b6e5713c55bae8ce9dbf165d2c5fdb9c4609c01d94e5">STATUS_VARMATSIZE</a>;
<a name="l01718"></a>01718     <a class="code" href="img_8c.html#ada573d4b40da77be4455bb9fab9a3033">imgEmpty</a>(&amp;test_img);
<a name="l01719"></a>01719 
<a name="l01720"></a>01720     <span class="comment">/* Open the file for read and write */</span>
<a name="l01721"></a>01721     <span class="keywordflow">if</span>((fp=fopen(fname, <span class="stringliteral">&quot;r+b&quot;</span>))==NULL) <span class="keywordflow">return</span> <a class="code" href="img_8h.html#a06fc87d81c62e9abb8790b6e5713c55ba89d8cfdc7190aa78887b412e66e292e4">STATUS_NOWRITEPERM</a>;
<a name="l01722"></a>01722 
<a name="l01723"></a>01723     <span class="comment">/* Read the mainheader, set new frame number, and write it back */</span>
<a name="l01724"></a>01724     <span class="keywordflow">if</span>((ret=<a class="code" href="ecat63r_8c.html#af904c6b26259c4f280cdc18f92aeeae5">ecat63ReadMainheader</a>(fp, &amp;main_header))!=0) <span class="keywordflow">return</span> <a class="code" href="img_8h.html#a06fc87d81c62e9abb8790b6e5713c55bafa1051360f88591f14aa0383d8087132">STATUS_NOMAINHEADER</a>;
<a name="l01725"></a>01725     <span class="keywordflow">if</span>(frame_to_write==0) frame_to_write=main_header.<a class="code" href="structecat63__mainheader.html#a01ad1f4be366fb3ad82da61022e9761c">num_frames</a>+1;
<a name="l01726"></a>01726     <span class="keywordflow">if</span>(main_header.<a class="code" href="structecat63__mainheader.html#a01ad1f4be366fb3ad82da61022e9761c">num_frames</a>&lt;frame_to_write)
<a name="l01727"></a>01727       main_header.<a class="code" href="structecat63__mainheader.html#a01ad1f4be366fb3ad82da61022e9761c">num_frames</a>=frame_to_write;
<a name="l01728"></a>01728     <span class="keywordflow">if</span>((ret=<a class="code" href="ecat63w_8c.html#af7389948dcb81fe5984b5ece280e9267">ecat63WriteMainheader</a>(fp, &amp;main_header))!=0) <span class="keywordflow">return</span> <a class="code" href="img_8h.html#a06fc87d81c62e9abb8790b6e5713c55ba89d8cfdc7190aa78887b412e66e292e4">STATUS_NOWRITEPERM</a>;
<a name="l01729"></a>01729     
<a name="l01730"></a>01730   }
<a name="l01731"></a>01731   <span class="keywordflow">if</span>(<a class="code" href="img_8h.html#a0d66ed136e5992b7b00ce6f43bad1439">IMG_TEST</a>&gt;2) {
<a name="l01732"></a>01732     printf(<span class="stringliteral">&quot;frame_to_write := %d\n&quot;</span>, frame_to_write);
<a name="l01733"></a>01733   }
<a name="l01734"></a>01734 
<a name="l01735"></a>01735   <span class="comment">/* Allocate memory for matrix float data */</span>
<a name="l01736"></a>01736   pxlNr=img-&gt;<a class="code" href="structIMG.html#a0818b82059710627a94282a793ff7030">dimx</a>*img-&gt;<a class="code" href="structIMG.html#aa17e87812503d3c142f31c08abcbf79d">dimy</a>*img-&gt;<a class="code" href="structIMG.html#a9c04780b47e6a627a2b700b76352c3fc">dimz</a>;
<a name="l01737"></a>01737   fdata=(<span class="keywordtype">float</span>*)malloc(pxlNr*<span class="keyword">sizeof</span>(<span class="keywordtype">float</span>));
<a name="l01738"></a>01738   <span class="keywordflow">if</span>(fdata==NULL) {fclose(fp); <span class="keywordflow">return</span> <a class="code" href="img_8h.html#a06fc87d81c62e9abb8790b6e5713c55bafbe470f6663c748e405bf509d2bb57bb">STATUS_NOMEMORY</a>;}
<a name="l01739"></a>01739   
<a name="l01740"></a>01740   <span class="comment">/* Set matrix subheader */</span>
<a name="l01741"></a>01741   <span class="keywordflow">if</span>(img-&gt;<a class="code" href="structIMG.html#a0d9199e1c3c4bd94d56eb30e421b309c">type</a>==<a class="code" href="img_8h.html#a04e835f7aec92fcc1d4ecf37e0dd2e9c">IMG_TYPE_RAW</a>) sub_header=(<span class="keywordtype">void</span>*)&amp;scan_header;
<a name="l01742"></a>01742   <span class="keywordflow">else</span> <span class="keywordflow">if</span>(img-&gt;<a class="code" href="structIMG.html#a0d9199e1c3c4bd94d56eb30e421b309c">type</a>==<a class="code" href="img_8h.html#ae8b5bb16b84adcbcd2bba3e10a36d62d">IMG_TYPE_IMAGE</a>) sub_header=&amp;image_header;
<a name="l01743"></a>01743   <span class="keywordflow">else</span> {fclose(fp); <span class="keywordflow">return</span> <a class="code" href="img_8h.html#a06fc87d81c62e9abb8790b6e5713c55baf8f3d89c25483639f6cbce4f6b08c1f8">STATUS_FAULT</a>;}
<a name="l01744"></a>01744   <a class="code" href="img__e63_8c.html#a5f01000b02cbb409121b4db0451d2303">imgSetEcat63SHeader</a>(img, sub_header);
<a name="l01745"></a>01745 
<a name="l01746"></a>01746   <span class="comment">/* Copy matrix pixel values to fdata */</span>
<a name="l01747"></a>01747   fptr=fdata;
<a name="l01748"></a>01748   <span class="keywordflow">for</span>(zi=0; zi&lt;img-&gt;<a class="code" href="structIMG.html#a9c04780b47e6a627a2b700b76352c3fc">dimz</a>; zi++)
<a name="l01749"></a>01749     <span class="keywordflow">for</span>(yi=0; yi&lt;img-&gt;<a class="code" href="structIMG.html#aa17e87812503d3c142f31c08abcbf79d">dimy</a>; yi++) <span class="keywordflow">for</span>(xi=0; xi&lt;img-&gt;<a class="code" href="structIMG.html#a0818b82059710627a94282a793ff7030">dimx</a>; xi++)
<a name="l01750"></a>01750       *fptr++=img-&gt;<a class="code" href="structIMG.html#a43e2c98dc0728731601a76abd51bb935">m</a>[zi][yi][xi][frame_index];
<a name="l01751"></a>01751 
<a name="l01752"></a>01752   <span class="comment">/* Write subheader and data, and set the rest of subheader contents */</span>
<a name="l01753"></a>01753   fptr=fdata; ret=-1;
<a name="l01754"></a>01754   <span class="keywordflow">for</span>(zi=0; zi&lt;img-&gt;dimz; zi++, fptr+=img-&gt;<a class="code" href="structIMG.html#a0818b82059710627a94282a793ff7030">dimx</a>*img-&gt;<a class="code" href="structIMG.html#aa17e87812503d3c142f31c08abcbf79d">dimy</a>) {
<a name="l01755"></a>01755     <span class="comment">/* Create new matrix id (i.e. matnum) */</span>
<a name="l01756"></a>01756     matrixId=<a class="code" href="ecat63ml_8c.html#a7561756da60d9e38a1419da8ebf220fb">mat_numcod</a>(frame_to_write, img-&gt;<a class="code" href="structIMG.html#a78e3164d578cf4a570e930dceb10fb51">planeNumber</a>[zi], 1, 0, 0);
<a name="l01757"></a>01757     <span class="keywordflow">if</span>(img-&gt;<a class="code" href="structIMG.html#a0d9199e1c3c4bd94d56eb30e421b309c">type</a>==<a class="code" href="img_8h.html#a04e835f7aec92fcc1d4ecf37e0dd2e9c">IMG_TYPE_RAW</a>) {
<a name="l01758"></a>01758       scan_header.<a class="code" href="structecat63__scanheader.html#aa7214f91108a9d7a5bec6f0edbe3493d">frame_start_time</a>=
<a name="l01759"></a>01759         (int)temp_roundf(1000.*img-&gt;<a class="code" href="structIMG.html#a8ff22fc209b6f44ad14341c8644788d2">start</a>[frame_index]);
<a name="l01760"></a>01760       scan_header.<a class="code" href="structecat63__scanheader.html#a253426410960e4047acfb591c24e179b">frame_duration</a>=
<a name="l01761"></a>01761         (int)temp_roundf(1000.*(img-&gt;<a class="code" href="structIMG.html#aa2b629a51ca62bcafad0a66d32e1ca8b">end</a>[frame_index]-img-&gt;<a class="code" href="structIMG.html#a8ff22fc209b6f44ad14341c8644788d2">start</a>[frame_index]));
<a name="l01762"></a>01762       scan_header.<a class="code" href="structecat63__scanheader.html#a28b007d345ada719bb886fd7a2683d76">prompts</a>=temp_roundf(img-&gt;<a class="code" href="structIMG.html#a76d63a001b8569d9f80ccb325e064be1">prompts</a>[frame_index]);
<a name="l01763"></a>01763       scan_header.<a class="code" href="structecat63__scanheader.html#ad0a2468779aec56e8d45ca685834eb16">delayed</a>=temp_roundf(img-&gt;<a class="code" href="structIMG.html#ae47ebbbdc0c308f473fec801a2df513d">randoms</a>[frame_index]);
<a name="l01764"></a>01764       ret=<a class="code" href="ecat63w_8c.html#a35a5f197ce098dfc1d91166962af59d2">ecat63WriteScanMatrix</a>(fp, matrixId, &amp;scan_header, fptr);
<a name="l01765"></a>01765     } <span class="keywordflow">else</span> {
<a name="l01766"></a>01766       image_header.<a class="code" href="structecat63__imageheader.html#a14bdbc2c5ce62d9ed0c57514b02f8f0e">frame_start_time</a>=
<a name="l01767"></a>01767         (int)temp_roundf(1000.*img-&gt;<a class="code" href="structIMG.html#a8ff22fc209b6f44ad14341c8644788d2">start</a>[frame_index]);
<a name="l01768"></a>01768       image_header.<a class="code" href="structecat63__imageheader.html#ae4fba67f8fb4e7f72f4d74b215b39058">frame_duration</a>=
<a name="l01769"></a>01769         (int)temp_roundf(1000.*(img-&gt;<a class="code" href="structIMG.html#aa2b629a51ca62bcafad0a66d32e1ca8b">end</a>[frame_index]-img-&gt;<a class="code" href="structIMG.html#a8ff22fc209b6f44ad14341c8644788d2">start</a>[frame_index]));
<a name="l01770"></a>01770       <span class="keywordflow">if</span>(img-&gt;<a class="code" href="structIMG.html#a6ce801dea67ec8224e8cfc9aebb8a909">decayCorrected</a>)
<a name="l01771"></a>01771         image_header.<a class="code" href="structecat63__imageheader.html#a46ec10bffd9ad4bd54271b68022bd41c">decay_corr_fctr</a>=img-&gt;<a class="code" href="structIMG.html#abf0ad6e681d08c3248dbd9837afa9973">decayCorrFactor</a>[frame_index];
<a name="l01772"></a>01772       ret=<a class="code" href="ecat63w_8c.html#a904b20e0e7304bc40e2e562f73e1b6ae">ecat63WriteImageMatrix</a>(fp, matrixId, &amp;image_header, fptr);
<a name="l01773"></a>01773     }
<a name="l01774"></a>01774     <span class="keywordflow">if</span>(ret!=0) <span class="keywordflow">break</span>;
<a name="l01775"></a>01775   } <span class="comment">/* next plane*/</span>
<a name="l01776"></a>01776   free(fdata); fclose(fp);
<a name="l01777"></a>01777   <span class="keywordflow">if</span>(ret) <span class="keywordflow">return</span> <a class="code" href="img_8h.html#a06fc87d81c62e9abb8790b6e5713c55ba8500261907803b2afa1f761991a22679">STATUS_DISKFULL</a>;
<a name="l01778"></a>01778 
<a name="l01779"></a>01779   <span class="keywordflow">return</span> <a class="code" href="img_8h.html#a06fc87d81c62e9abb8790b6e5713c55ba7e4a42e3b6dd63708c64cf3db6f69566">STATUS_OK</a>;
<a name="l01780"></a>01780 }
<a name="l01781"></a>01781 <span class="comment">/*****************************************************************************/</span>
<a name="l01782"></a>01782 
<a name="l01783"></a>01783 <span class="comment">/*****************************************************************************/</span>
<a name="l01790"></a><a class="code" href="imgfile_8h.html#a5f01000b02cbb409121b4db0451d2303">01790</a> <span class="keywordtype">void</span> <a class="code" href="img__e63_8c.html#a5f01000b02cbb409121b4db0451d2303">imgSetEcat63SHeader</a>(<a class="code" href="structIMG.html">IMG</a> *img, <span class="keywordtype">void</span> *h) {
<a name="l01791"></a>01791   <a class="code" href="structecat63__imageheader.html">ECAT63_imageheader</a> *image_header;
<a name="l01792"></a>01792   <a class="code" href="structecat63__scanheader.html">ECAT63_scanheader</a> *scan_header;
<a name="l01793"></a>01793 
<a name="l01794"></a>01794   <span class="keywordflow">if</span>(img-&gt;<a class="code" href="structIMG.html#a0d9199e1c3c4bd94d56eb30e421b309c">type</a>==<a class="code" href="img_8h.html#a04e835f7aec92fcc1d4ecf37e0dd2e9c">IMG_TYPE_RAW</a>) {
<a name="l01795"></a>01795     scan_header=(<a class="code" href="structecat63__scanheader.html">ECAT63_scanheader</a>*)h;
<a name="l01796"></a>01796     scan_header-&gt;<a class="code" href="structecat63__scanheader.html#ad1ee12caf8404e9237c9b14d95711109">data_type</a>=<a class="code" href="ecat63_8h.html#ab6ed0aaf03f063c606604089878ed91a">VAX_I2</a>;
<a name="l01797"></a>01797     scan_header-&gt;<a class="code" href="structecat63__scanheader.html#adee5ad20def49d6f13da7efde9da4e3e">dimension_1</a>=img-&gt;<a class="code" href="structIMG.html#a0818b82059710627a94282a793ff7030">dimx</a>;
<a name="l01798"></a>01798     scan_header-&gt;<a class="code" href="structecat63__scanheader.html#a87c12560397fa7408d95ad30d1800f92">dimension_2</a>=img-&gt;<a class="code" href="structIMG.html#aa17e87812503d3c142f31c08abcbf79d">dimy</a>;
<a name="l01799"></a>01799     scan_header-&gt;<a class="code" href="structecat63__scanheader.html#aaf23846f5c3ee43188d49fac0f592498">frame_duration_sec</a>=1;
<a name="l01800"></a>01800     scan_header-&gt;<a class="code" href="structecat63__scanheader.html#acfabab41eaa593a0625a43057bd9b558">scale_factor</a>=1.0;
<a name="l01801"></a>01801     scan_header-&gt;<a class="code" href="structecat63__scanheader.html#aa7214f91108a9d7a5bec6f0edbe3493d">frame_start_time</a>=0;
<a name="l01802"></a>01802     scan_header-&gt;<a class="code" href="structecat63__scanheader.html#a253426410960e4047acfb591c24e179b">frame_duration</a>=1000;
<a name="l01803"></a>01803     scan_header-&gt;<a class="code" href="structecat63__scanheader.html#a3077aca1fa9f9b64c57f4b6eb19780fb">loss_correction_fctr</a>=1.0;
<a name="l01804"></a>01804   } <span class="keywordflow">else</span> {
<a name="l01805"></a>01805     image_header=(<a class="code" href="structecat63__imageheader.html">ECAT63_imageheader</a>*)h;
<a name="l01806"></a>01806     image_header-&gt;<a class="code" href="structecat63__imageheader.html#a00da8baaaefa0ca83e0c12636b298196">data_type</a>=<a class="code" href="ecat63_8h.html#ab6ed0aaf03f063c606604089878ed91a">VAX_I2</a>;
<a name="l01807"></a>01807     image_header-&gt;<a class="code" href="structecat63__imageheader.html#a417f483d23efabd675ed72cdd4bbdb98">num_dimensions</a>=2;
<a name="l01808"></a>01808     image_header-&gt;<a class="code" href="structecat63__imageheader.html#a86aae28e4de4b65fa5de745aab0bf082">dimension_1</a>=img-&gt;<a class="code" href="structIMG.html#a0818b82059710627a94282a793ff7030">dimx</a>;
<a name="l01809"></a>01809     image_header-&gt;<a class="code" href="structecat63__imageheader.html#ad53dbc60f5f5a34b7327abbf0d609d5d">dimension_2</a>=img-&gt;<a class="code" href="structIMG.html#aa17e87812503d3c142f31c08abcbf79d">dimy</a>;
<a name="l01810"></a>01810     image_header-&gt;<a class="code" href="structecat63__imageheader.html#a9a0fd8c173273797330c7c67effdffd6">recon_scale</a>=img-&gt;<a class="code" href="structIMG.html#ab23da0c2295967727c6d33d0fbdc8c88">zoom</a>;
<a name="l01811"></a>01811     image_header-&gt;<a class="code" href="structecat63__imageheader.html#ac4ff92a4d0a9b55e3647bfb45af9d381">quant_scale</a>=1.0;
<a name="l01812"></a>01812     image_header-&gt;<a class="code" href="structecat63__imageheader.html#ac2b4f461866cfcbe8bf33939d461becc">slice_width</a>=img-&gt;<a class="code" href="structIMG.html#afc2a1d2417a8a3afe2c500173a05c472">sizez</a>/10.;
<a name="l01813"></a>01813     image_header-&gt;<a class="code" href="structecat63__imageheader.html#a749a7dfb6443194317be2260fc7b5b7b">pixel_size</a>=img-&gt;<a class="code" href="structIMG.html#a02cc239e917e7ebf85e34f21448ff080">sizex</a>/10.;
<a name="l01814"></a>01814     image_header-&gt;<a class="code" href="structecat63__imageheader.html#a14bdbc2c5ce62d9ed0c57514b02f8f0e">frame_start_time</a>=0;
<a name="l01815"></a>01815     image_header-&gt;<a class="code" href="structecat63__imageheader.html#ae4fba67f8fb4e7f72f4d74b215b39058">frame_duration</a>=1000;
<a name="l01816"></a>01816     image_header-&gt;<a class="code" href="structecat63__imageheader.html#a7c53b9df3c138cf5b9d5b2986d003377">plane_eff_corr_fctr</a>=1.0;
<a name="l01817"></a>01817     image_header-&gt;<a class="code" href="structecat63__imageheader.html#a46ec10bffd9ad4bd54271b68022bd41c">decay_corr_fctr</a>=1.0;
<a name="l01818"></a>01818     image_header-&gt;<a class="code" href="structecat63__imageheader.html#ab7fe2e08a8afa0b40c4fb9cf5a434ac1">loss_corr_fctr</a>=1.0;
<a name="l01819"></a>01819     image_header-&gt;<a class="code" href="structecat63__imageheader.html#aa50b6a76225241de1056e26de450fb1c">ecat_calibration_fctr</a>=1.0;
<a name="l01820"></a>01820     image_header-&gt;<a class="code" href="structecat63__imageheader.html#a6338eb4b7fdcb624ac0673260d16db42">well_counter_cal_fctr</a>=1.0;
<a name="l01821"></a>01821     image_header-&gt;<a class="code" href="structecat63__imageheader.html#a38136ac931d35627e8644ccc71d97aec">quant_units</a>=<a class="code" href="imgunit_8c.html#a0d8d16b27eaefdf56d32b5c4c51f3757">imgUnitToEcat6</a>(img);
<a name="l01822"></a>01822   }
<a name="l01823"></a>01823 }
<a name="l01824"></a>01824 <span class="comment">/*****************************************************************************/</span>
<a name="l01825"></a>01825 
<a name="l01826"></a>01826 <span class="comment">/*****************************************************************************/</span>
</pre></div></div>
</div>
<hr class="footer"/><address class="footer"><small>Generated on Mon Aug 8 2011 by&#160;
<a href="http://www.doxygen.org/index.html">
<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.7.4 </small></address>
</body>
</html>