File: edftools.h

package info (click to toggle)
pyhst2 2020c-7
  • links: PTS, VCS
  • area: contrib
  • in suites: bookworm, sid
  • size: 13,540 kB
  • sloc: ansic: 11,807; python: 9,708; cpp: 6,786; makefile: 152; sh: 31
file content (180 lines) | stat: -rw-r--r-- 5,015 bytes parent folder | download | duplicates (2)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180

#/*##########################################################################
# Copyright (C) 2001-2013 European Synchrotron Radiation Facility
#
#              PyHST2  
#  European Synchrotron Radiation Facility, Grenoble,France
#
# PyHST2 is  developed at
# the ESRF by the Scientific Software  staff.
# Principal author for PyHST2: Alessandro Mirone.
#
# This program is free software; you can redistribute it and/or modify it 
# under the terms of the GNU General Public License as published by the Free
# Software Foundation; either version 2 of the License, or (at your option) 
# any later version.
#
# PyHST2 is distributed in the hope that it will be useful, but WITHOUT ANY
# WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS
# FOR A PARTICULAR PURPOSE.  See the GNU General Public License for more
# details.
#
# You should have received a copy of the GNU General Public License along with
# PyHST2; if not, write to the Free Software Foundation, Inc., 59 Temple Place,
# Suite 330, Boston, MA 02111-1307, USA.
#
# PyHST2 follows the dual licensing model of Trolltech's Qt and Riverbank's PyQt
# and cannot be used as a free plugin for a non-free program. 
#
# Please contact the ESRF industrial unit (industry@esrf.fr) if this license 
# is a problem for you.
#############################################################################*/

#include<semaphore.h>
#define H5Dopen_vers 1
#include<hdf5.h>



#define LowByteFirst 1
#define HighByteFirst  0
#define UnsignedShort  0
#define FloatValue     1
#define SignedInteger  2

int byteorder ( void );
char trimma(char  **pos, char **pos2) ;
void    prereadEdfHeader( int *sizeImage , 
			  int *byteorder ,
			  int *datatype  ,
			  long int *hsize     , 
			  int *Dim_1     , 
			  int *Dim_2     , 
			  char *filename,
			  char *CUR_NAME,
			  float *current
			  ) ;
void    prereadEdfHeader_restrained(  int *start_2     , 
				      int *real_2     , 
				      char *filename
				      ) ;
void write_data_to_edf_restrained( float *SLICE, int num_y,int  num_x,
				   int start_y, int real_num_y,
				   const char * nomeout );
void extended_fread(   char *ptr,      /* memory to write in */
                       int   size_of_block,
                       int ndims        ,
                       int *dims      ,
                       int  *strides    ,
                       FILE *stream  ) ;

void     read_data_from_edf( char * filename, 
			     float *dataptr  , // target_float
			     char *buffer  ,   // work buffer
			     int filedatatype, //
			     int rotation_vertical,
			     long int  headerSize,
			     long int pos0 ,  long int pos1 ,
			     long int size0 , long int size1,
			     int sizeofdatatype,
			     int Dim_2,
			     int Dim_1,
			     int filebyteorder,
			     int binning,
			     sem_t * semaforo
			     );


void read_data_from_h5( char * filename, 
			char * dsname,
			int nproj, 
			float *target   , // target_float
			long int pos0 ,  long int pos1 ,
			long int size0 , long int size1,
			int rotation_vertical,
			int binning,
			int multiplo,
			float threshold,
			float *background
			);


void read_projSequence_from_h5( char * filename,
				char * dsname,
				int Ninterval,
				int *nproj_intervals,
				float *target   , // target_float
				long int pos0 ,  long int pos1 ,
				long int size0 , long int size1,
				int rotation_vertical,
				int binning,
				hid_t *file,
				hid_t *dataset,
				hid_t *dataset_current,
				float *bptr
				) ;


void     read_data_from_edf_eli( char * filename, 
				 float *dataptr  , // target_float
				 int filedatatype, //
				 int rotation_vertical,
				 long int  headerSize,
				 long int pos0 ,  long int pos1 ,
				 long int size0 , long int size1,
				 int sizeofdatatype,
				 int Dim_2, int Dim_1,
				 int filebyteorder,
				 int binning,
				 int iread,
				 float DZPERPROJ,
				 float *Ddark,
				 int correct_ff,
				 float *ff_infos,
				 float **FFs,
				 int doubleffcorrection,
				 int takelog,
				 float *ffcorr,
				 float *currents,
				 float curr,
				 sem_t * semaforo
				 );


void read_data_from_h5_eli( char * filename,
			    char * dsname,
			    int nproj,
			    float *target   , // target_float
			    long int pos0 ,  long int pos1 ,
			    long int size0 , long int size1,
			    int rotation_vertical,
			    int binning,
			    float DZPERPROJ,
			    float *Ddark,
			    int correct_ff,
			    float *ff_infos,
			    float **FFs,
			    int doubleffcorrection,
			    int takelog,
			    float *ffcorr,
			    hid_t     *file,      
			    hid_t     *dataset,
			    hid_t *dataset_current
			    ) ;





void write_data_to_edf( float *SLICE, int num_y,int  num_x,  const char * nomeout  ) ;



void write_add_data_to_edf( float *SLICE, int num_y,int  num_x, char * nomeout,
			    int firstline, int nlines) ;

#ifndef EDF_TYPEFUNC_DECLARED
#define EDF_TYPEFUNC_DECLARED
//Typedef for plugins
typedef void (*write_data_to_edf_func)( float *, int ,int , char *) ;
#endif