Monte Carlo eXtreme (MCX)
mcx_utils.h
Go to the documentation of this file.
1 /***************************************************************************/
25 /***************************************************************************/
31 #ifndef _MCEXTREME_UTILITIES_H
32 #define _MCEXTREME_UTILITIES_H
33 
34 #include <stdio.h>
35 #include <vector_types.h>
36 #include "cjson/cJSON.h"
37 #include "float.h"
38 #include "nifti1.h"
39 
40 #ifdef _OPENMP
41  #include <omp.h>
42 #endif
43 
44 #define EPS FLT_EPSILON
45 #define VERY_BIG (1.f/FLT_EPSILON)
47 #define MAX_FULL_PATH 2048
48 #define MAX_PATH_LENGTH 1024
49 #define MAX_SESSION_LENGTH 256
50 #define MAX_DEVICE 256
52 #define MCX_CUDA_ERROR_LAUNCH_FAILED 719
54 #ifndef MCX_CUDA_ARCH
55  #define MCX_CUDA_ARCH 100
56 #endif
57 
58 #define MCX_ERROR(id,msg) mcx_error(id,msg,__FILE__,__LINE__)
59 #define MIN(a,b) ((a)<(b)?(a):(b))
60 #define MAX(a,b) ((a)>(b)?(a):(b))
62 typedef unsigned int uint;
63 typedef unsigned short ushort;
65 enum TOutputType {otFlux, otFluence, otEnergy, otJacobian, otWP, otDCS, otRF, otL};
66 enum TMCXParent {mpStandalone, mpMATLAB, mpPython};
67 enum TOutputFormat {ofMC2, ofNifti, ofAnalyze, ofUBJSON, ofTX3, ofJNifti, ofBJNifti};
68 enum TBoundary {bcUnknown, bcReflect, bcAbsorb, bcMirror, bcCyclic};
69 enum TBJData {JDB_mixed, JDB_nulltype, JDB_noop, JDB_true, JDB_false,
70  JDB_char, JDB_string, JDB_hp, JDB_int8, JDB_uint8, JDB_int16, JDB_uint16, JDB_int32, JDB_uint32,
71  JDB_int64, JDB_uint64, JDB_half, JDB_single, JDB_double, JDB_array, JDB_object, JDB_numtypes
72  };
73 
78 typedef struct MCXMedium {
79  float mua;
80  float mus;
81  float g;
82  float n;
83 } Medium;
84 
89 typedef struct MCXPolarizeMedium {
90  float mua;
91  float r;
92  float rho;
93  float nsph;
94  float nmed;
95 } POLMedium;
96 
102 typedef struct MCXHistoryHeader {
103  char magic[4];
104  unsigned int version;
105  unsigned int maxmedia;
106  unsigned int detnum;
107  unsigned int colcount;
108  unsigned int totalphoton;
109  unsigned int detected;
110  unsigned int savedphoton;
111  float unitinmm;
112  unsigned int seedbyte;
113  float normalizer;
114  int respin;
115  unsigned int srcnum;
116  unsigned int savedetflag;
117  int reserved[2];
118 } History;
119 
124 typedef struct PhotonReplay {
125  int* detid;
126  void* seed;
127  float* weight;
128  float* tof;
129 } Replay;
130 
135 typedef struct MCXGPUInfo {
136  char name[MAX_SESSION_LENGTH];
137  int id;
138  int devcount;
139  int major;
140  int minor;
141  size_t globalmem;
142  size_t constmem;
143  size_t sharedmem;
144  int regcount;
145  int clock;
146  int sm;
147  int core;
148  int autoblock;
150  int maxgate;
152 } GPUInfo;
153 
158 typedef struct MCXConfig {
159  size_t nphoton;
160  unsigned int nblocksize;
161  unsigned int nthread;
162  int seed;
167  float tstart;
168  float tstep;
169  float tend;
175  unsigned int medianum;
176  unsigned int polmedianum;
177  unsigned int detnum;
178  unsigned int maxdetphoton;
179  float detradius;
180  float sradius;
187  unsigned int maxgate;
188  int respin;
189  unsigned int printnum;
190  int gpuid;
192  unsigned int* vol;
193  char session[MAX_SESSION_LENGTH];
194  char isrowmajor;
195  char isreflect;
196  char isref3;
197  char isrefint;
199  char issavedet;
200  char issave2pt;
201  char isgpuinfo;
202  char isspecular;
203  char issrcfrom0;
204  char isdumpmask;
205  char autopilot;
206  char issaveseed;
207  char issaveexit;
208  char issaveref;
209  char ismomentum;
210  char isdumpjson;
211  char internalsrc;
212  int zipid;
213  char srctype;
216  char outputtype;
218  char faststep;
219  float minenergy;
220  float unitinmm;
221  float omega;
222  float lambda;
223  FILE* flog;
225  float* exportfield;
226  float* exportdetected;
227  unsigned long int detectedcount;
228  char rootpath[MAX_PATH_LENGTH];
229  char* shapedata;
230  char* extrajson;
232  int voidtime;
235  unsigned int srcnum;
236  float* srcpattern;
238  void* seeddata;
239  int replaydet;
240  char seedfile[MAX_PATH_LENGTH];
241  char jsonfile[MAX_PATH_LENGTH];
242  unsigned int debuglevel;
243  unsigned int savedetflag;
244  char deviceid[MAX_DEVICE];
245  float workload[MAX_DEVICE];
246  int parentid;
247  unsigned int runtime;
249  double energytot;
250  double energyabs;
251  double energyesc;
252  float normalizer;
253  unsigned int maxjumpdebug;
254  unsigned int debugdatalen;
255  unsigned int gscatter;
258  float* dx;
259  float* dy;
260  float* dz;
261  char bc[12];
262  unsigned int nphase;
263  float* invcdf;
264 } Config;
265 
266 #ifdef __cplusplus
267 extern "C" {
268 #endif
269 void mcx_savedata(float* dat, size_t len, Config* cfg);
270 void mcx_savenii(float* dat, size_t len, char* name, int type32bit, int outputformatid, Config* cfg);
271 void mcx_error(const int id, const char* msg, const char* file, const int linenum);
272 void mcx_loadconfig(FILE* in, Config* cfg);
273 void mcx_saveconfig(FILE* in, Config* cfg);
274 void mcx_readconfig(char* fname, Config* cfg);
275 void mcx_writeconfig(char* fname, Config* cfg);
276 void mcx_initcfg(Config* cfg);
277 void mcx_clearcfg(Config* cfg);
278 void mcx_preprocess(Config* cfg);
279 void mcx_parsecmd(int argc, char* argv[], Config* cfg);
280 void mcx_usage(Config* cfg, char* exename);
281 void mcx_printheader(Config* cfg);
282 void mcx_loadvolume(char* filename, Config* cfg, int isbuf);
283 void mcx_normalize(float field[], float scale, int fieldlen, int option, int pidx, int srcnum);
284 void mcx_kahanSum(float* sum, float* kahanc, float input);
285 int mcx_readarg(int argc, char* argv[], int id, void* output, const char* type);
286 void mcx_printlog(Config* cfg, char* str);
287 int mcx_remap(char* opt);
288 void mcx_maskdet(Config* cfg);
289 void mcx_dumpmask(Config* cfg);
290 void mcx_version(Config* cfg);
291 void mcx_convertrow2col(unsigned int** vol, uint3* dim);
292 void mcx_convertrow2col64(size_t** vol, uint3* dim);
293 void mcx_convertcol2row(unsigned int** vol, uint3* dim);
294 void mcx_convertcol2row4d(unsigned int** vol, uint4* dim);
295 int mcx_loadjson(cJSON* root, Config* cfg);
296 int mcx_keylookup(char* key, const char* table[]);
297 int mcx_lookupindex(char* key, const char* index);
298 int mcx_parsedebugopt(char* debugopt, const char* debugflag);
299 void mcx_savedetphoton(float* ppath, void* seeds, int count, int seedbyte, Config* cfg);
300 void mcx_loadseedfile(Config* cfg);
301 void mcx_cleargpuinfo(GPUInfo** gpuinfo);
302 int mcx_isbinstr(const char* str);
303 void mcx_progressbar(float percent, Config* cfg);
304 void mcx_flush(Config* cfg);
305 int mcx_run_from_json(char* jsonstr);
306 float mcx_updatemua(unsigned int mediaid, Config* cfg);
307 void mcx_savejdata(char* filename, Config* cfg);
308 int mcx_jdataencode(void* vol, int ndim, uint* dims, char* type, int byte, int zipid, void* obj, int isubj, Config* cfg);
309 int mcx_jdatadecode(void** vol, int* ndim, uint* dims, int maxdim, char** type, cJSON* obj, Config* cfg);
310 void mcx_savejnii(float* vol, int ndim, uint* dims, float* voxelsize, char* name, int isfloat, Config* cfg);
311 void mcx_savebnii(float* vol, int ndim, uint* dims, float* voxelsize, char* name, int isfloat, Config* cfg);
312 void mcx_savejdet(float* ppath, void* seeds, uint count, int doappend, Config* cfg);
313 int mcx_svmc_bgvoxel(int vol);
314 void mcx_loadseedjdat(char* filename, Config* cfg);
315 void mcx_prep_polarized(Config* cfg);
316 void mcx_replayinit(Config* cfg, float* detps, int dimdetps[2], int seedbyte);
317 void mcx_validatecfg(Config* cfg, float* detps, int dimdetps[2], int seedbyte);
318 
319 #ifdef MCX_CONTAINER
320 #ifdef __cplusplus
321 extern "C"
322 #endif
323 int mcx_throw_exception(const int id, const char* msg, const char* filename, const int linenum);
324 void mcx_matlab_flush(void);
325 void mcx_python_flush(void);
326 #endif
327 
328 #if defined(MCX_CONTAINER) && (defined(MATLAB_MEX_FILE) || defined(OCTAVE_API_VERSION_NUMBER))
329 #ifdef _OPENMP
330 #define MCX_FPRINTF(fp,...) {if(omp_get_thread_num()==0) mexPrintf(__VA_ARGS__);}
331 #else
332 #define MCX_FPRINTF(fp,...) mexPrintf(__VA_ARGS__)
333 #endif
334 #else
335 #define MCX_FPRINTF(fp,...) fprintf(fp,__VA_ARGS__)
336 #endif
337 
338 #if defined(MATLAB_MEX_FILE) || defined(OCTAVE_API_VERSION_NUMBER)
339 int mexPrintf(const char* format, ... );
340 #else
341 int mexPrintf(const char* format, ... );
342 #endif
343 int mexEvalString(const char* command);
344 
345 #ifdef __cplusplus
346 }
347 #endif
348 
349 #endif
unsigned int savedetflag
Definition: mcx_utils.h:243
char isreflect
Definition: mcx_utils.h:195
char internalsrc
Definition: mcx_utils.h:211
void mcx_normalize(float field[], float scale, int fieldlen, int option, int pidx, int srcnum)
Normalize the solution by multiplying a scaling factor.
Definition: mcx_utils.c:1172
unsigned int polmedianum
Definition: mcx_utils.h:176
float * srcpattern
Definition: mcx_utils.h:236
void mcx_usage(Config *cfg, char *exename)
Print MCX help information.
Definition: mcx_utils.c:5029
float lambda
Definition: mcx_utils.h:222
Official definition of the nifti1 header. Written by Bob Cox, SSCC, NIMH.
char issaveseed
Definition: mcx_utils.h:206
int parentid
Definition: mcx_utils.h:246
double energytot
Definition: mcx_utils.h:249
char issavedet
Definition: mcx_utils.h:199
void mcx_progressbar(float percent, Config *cfg)
Print a progress bar.
Definition: mcx_utils.c:4242
struct MCXConfig Config
float mua
Definition: mcx_utils.h:90
#define float3(a, b, c)
Definition: mcx_core.cu:82
int mcx_remap(char *opt)
Test if a long command line option is supported.
Definition: mcx_utils.c:4364
unsigned long int detectedcount
Definition: mcx_utils.h:227
struct MCXHistoryHeader History
float mcx_updatemua(unsigned int mediaid, Config *cfg)
Retrieve mua for different cfg.vol formats to convert fluence back to energy in post-processing.
Definition: mcx_utils.c:1208
int gpuid
Definition: mcx_utils.h:190
Medium * prop
Definition: mcx_utils.h:182
size_t sharedmem
Definition: mcx_utils.h:143
void mcx_saveconfig(FILE *in, Config *cfg)
Save simulation settings to an inp file.
Definition: mcx_utils.c:2879
void mcx_version(Config *cfg)
Print MCX software version.
Definition: mcx_utils.c:4930
void mcx_convertcol2row4d(unsigned int **vol, uint4 *dim)
Convert a column-major (MATLAB/FORTRAN) array to a row-major (C/C++) array.
Definition: mcx_utils.c:3848
Definition: mcx_utils.h:158
void mcx_printlog(Config *cfg, char *str)
Print a message to the console or a log file.
Definition: mcx_utils.c:1157
char outputformat
Definition: mcx_utils.h:217
void mcx_flush(Config *cfg)
Force flush the command line to print the message.
Definition: mcx_utils.c:1240
FILE * flog
Definition: mcx_utils.h:223
int sm
Definition: mcx_utils.h:146
void mcx_replayinit(Config *cfg, float *detps, int dimdetps[2], int seedbyte)
Initialize the replay data structure from detected photon data - in embedded mode (MATLAB/Python) ...
Definition: mcx_utils.c:3321
Definition: mcx_utils.h:124
float4 srcparam1
Definition: mcx_utils.h:233
void mcx_savedetphoton(float *ppath, void *seeds, int count, int seedbyte, Config *cfg)
Save detected photon data to mch format binary file.
Definition: mcx_utils.c:951
int mcx_readarg(int argc, char *argv[], int id, void *output, const char *type)
Function to read a single parameter value followed by a command line option.
Definition: mcx_utils.c:4302
unsigned int maxjumpdebug
Definition: mcx_utils.h:253
int mcx_jdataencode(void *vol, int ndim, uint *dims, char *type, int byte, int zipid, void *obj, int isubj, Config *cfg)
Export an ND volumetric image to JSON/JData encoded construct.
Definition: mcx_utils.c:4168
Definition: mcx_utils.h:78
unsigned int colcount
Definition: mcx_utils.h:107
void mcx_convertrow2col64(size_t **vol, uint3 *dim)
Convert a row-major (C/C++) array to a column-major (MATLAB/FORTRAN) array.
Definition: mcx_utils.c:3788
unsigned int detnum
Definition: mcx_utils.h:106
void mcx_savejnii(float *vol, int ndim, uint *dims, float *voxelsize, char *name, int isfloat, Config *cfg)
Save volumetric output (fluence etc) to a JNIfTI/JSON/JData format file.
Definition: mcx_utils.c:737
void mcx_clearcfg(Config *cfg)
Clearing the simulation configuration data structure.
Definition: mcx_utils.c:370
float * dz
Definition: mcx_utils.h:260
int mcx_throw_exception(const int id, const char *msg, const char *filename, const int linenum)
Error reporting function in the mex function, equivallent to mcx_error in binary mode.
Definition: mcxlab.cpp:1165
unsigned int runtime
Definition: mcx_utils.h:247
void mcx_kahanSum(float *sum, float *kahanc, float input)
Kahan summation: Add a sequence of finite precision floating point numbers.
Definition: mcx_utils.c:1193
unsigned int maxgate
Definition: mcx_utils.h:187
unsigned int totalphoton
Definition: mcx_utils.h:108
int mcx_lookupindex(char *key, const char *index)
Look up a single character in a string.
Definition: mcx_utils.c:4909
char issave2pt
Definition: mcx_utils.h:200
void mcx_loadseedfile(Config *cfg)
Load previously saved photon seeds from an .mch file for replay.
Definition: mcx_utils.c:3657
size_t nphoton
Definition: mcx_utils.h:159
float rho
Definition: mcx_utils.h:92
void mcx_convertrow2col(unsigned int **vol, uint3 *dim)
Convert a row-major (C/C++) array to a column-major (MATLAB/FORTRAN) array.
Definition: mcx_utils.c:3758
void mcx_loadseedjdat(char *filename, Config *cfg)
Load previously saved photon seeds from an .jdat file for replay.
Definition: mcx_utils.c:3557
void mcx_savejdata(char *filename, Config *cfg)
Save simulation settings to an inp file.
Definition: mcx_utils.c:2910
Replay replay
Definition: mcx_utils.h:237
float tstart
Definition: mcx_utils.h:167
unsigned int debuglevel
Definition: mcx_utils.h:242
void mcx_savebnii(float *vol, int ndim, uint *dims, float *voxelsize, char *name, int isfloat, Config *cfg)
Save volumetric output (fluence etc) to a binary JNIfTI/JSON/JData format file.
Definition: mcx_utils.c:574
Definition: mcx_utils.h:102
void mcx_readconfig(char *fname, Config *cfg)
Read simulation settings from a configuration file (.inp or .json)
Definition: mcx_utils.c:1329
char ismomentum
Definition: mcx_utils.h:209
#define float4(a, b, c, d)
Definition: mcx_core.cu:83
uint3 crop1
Definition: mcx_utils.h:174
int respin
Definition: mcx_utils.h:188
void * seeddata
Definition: mcx_utils.h:238
char isnormalized
Definition: mcx_utils.h:198
unsigned int savedetflag
Definition: mcx_utils.h:116
int * detid
Definition: mcx_utils.h:125
char outputtype
Definition: mcx_utils.h:216
int zipid
Definition: mcx_utils.h:212
char faststep
Definition: mcx_utils.h:218
void mcx_prep_polarized(Config *cfg)
Preprocess media to prepare polarized photon simulation.
Definition: mcx_utils.c:1704
struct MCXMedium Medium
unsigned int uint
Definition: mcx_utils.h:62
float4 * smatrix
Definition: mcx_utils.h:185
int replaydet
Definition: mcx_utils.h:239
size_t globalmem
Definition: mcx_utils.h:141
#define uint4(a, b, c, d)
Definition: mcx_core.cu:79
Definition: mcx_utils.h:89
void mcx_preprocess(Config *cfg)
Preprocess user input and prepare the cfg data structure.
Definition: mcx_utils.c:1456
unsigned int savedphoton
Definition: mcx_utils.h:110
void mcx_dumpmask(Config *cfg)
Save the pre-masked volume (with detector ID) to an nii file.
Definition: mcx_utils.c:4031
unsigned int nblocksize
Definition: mcx_utils.h:160
char isref3
Definition: mcx_utils.h:196
int seedbyte
dimensions of the cfg.detphotons array
Definition: mcxlab.cpp:82
int respin
Definition: mcx_utils.h:114
float sradius
Definition: mcx_utils.h:180
unsigned int maxmedia
Definition: mcx_utils.h:105
int voidtime
Definition: mcx_utils.h:232
void * seed
Definition: mcx_utils.h:126
float * exportdetected
Definition: mcx_utils.h:226
struct PhotonReplay Replay
float normalizer
Definition: mcx_utils.h:252
float mus
Definition: mcx_utils.h:80
void mcx_writeconfig(char *fname, Config *cfg)
Write simulation settings to an inp file.
Definition: mcx_utils.c:1429
Definition: mcx_utils.h:135
float4 srciquv
Definition: mcx_utils.h:166
unsigned int maxdetphoton
Definition: mcx_utils.h:178
int maxvoidstep
Definition: mcx_utils.h:231
int autoblock
Definition: mcx_utils.h:148
int maxgate
Definition: mcx_utils.h:150
History his
Definition: mcx_utils.h:224
float nmed
Definition: mcx_utils.h:94
int mcx_svmc_bgvoxel(int vol)
Check if a voxel contains background medium(0)
Definition: mcx_utils.c:3883
int maxmpthread
Definition: mcx_utils.h:151
float tstep
Definition: mcx_utils.h:168
char issrcfrom0
Definition: mcx_utils.h:203
struct MCXGPUInfo GPUInfo
float n
Definition: mcx_utils.h:82
int id
Definition: mcx_utils.h:137
float unitinmm
Definition: mcx_utils.h:111
unsigned int detected
Definition: mcx_utils.h:109
char * shapedata
Definition: mcx_utils.h:229
unsigned int printnum
Definition: mcx_utils.h:189
int minor
Definition: mcx_utils.h:140
int major
Definition: mcx_utils.h:139
void mcx_convertcol2row(unsigned int **vol, uint3 *dim)
Convert a column-major (MATLAB/FORTRAN) array to a row-major (C/C++) array.
Definition: mcx_utils.c:3818
int mcx_run_from_json(char *jsonstr)
Run MCX simulations from a JSON input in a persistent session.
Definition: mcx_utils.c:4967
char * extrajson
Definition: mcx_utils.h:230
unsigned int nthread
Definition: mcx_utils.h:161
char isrefint
Definition: mcx_utils.h:197
unsigned int gscatter
Definition: mcx_utils.h:255
uint mediabyte
Definition: mcx_utils.h:257
unsigned int version
Definition: mcx_utils.h:104
int autothread
Definition: mcx_utils.h:149
float nsph
Definition: mcx_utils.h:93
void mcx_maskdet(Config *cfg)
Pre-label the voxel near a detector for easy photon detection.
Definition: mcx_utils.c:3900
void mcx_cleargpuinfo(GPUInfo **gpuinfo)
Reset and clear the GPU information data structure.
Definition: mcx_utils.c:357
float normalizer
Definition: mcx_utils.h:113
void mcx_matlab_flush()
Force matlab refresh the command window to print all buffered messages.
Definition: mcxlab.cpp:1183
unsigned int detnum
Definition: mcx_utils.h:177
const char debugflag[]
Definition: mcx_utils.c:150
void mcx_loadconfig(FILE *in, Config *cfg)
Load user inputs from a .inp input file.
Definition: mcx_utils.c:1819
float mua
Definition: mcx_utils.h:79
unsigned int srcnum
Definition: mcx_utils.h:115
#define MAX_SESSION_LENGTH
Definition: mcx_utils.h:49
float minenergy
Definition: mcx_utils.h:219
unsigned int srcnum
Definition: mcx_utils.h:235
float4 * detpos
Definition: mcx_utils.h:184
void mcx_savedata(float *dat, size_t len, Config *cfg)
Save volumetric output (fluence etc) to mc2 format binary file.
Definition: mcx_utils.c:862
float tend
Definition: mcx_utils.h:169
float4 srcpos
Definition: mcx_utils.h:164
void mcx_loadvolume(char *filename, Config *cfg, int isbuf)
Load media index data volume (.bin or .vol) to the memory.
Definition: mcx_utils.c:3138
double energyesc
Definition: mcx_utils.h:251
void mcx_initcfg(Config *cfg)
Initializing the simulation configuration with default values.
Definition: mcx_utils.c:232
float * exportdebugdata
Definition: mcx_utils.h:256
char issaveexit
Definition: mcx_utils.h:207
float omega
Definition: mcx_utils.h:221
char isgpuinfo
Definition: mcx_utils.h:201
int mcx_keylookup(char *key, const char *table[])
Look up a string in a string list and return the index.
Definition: mcx_utils.c:4876
void mcx_printheader(Config *cfg)
Print MCX output header.
Definition: mcx_utils.c:5002
size_t constmem
Definition: mcx_utils.h:142
unsigned int debugdatalen
Definition: mcx_utils.h:254
unsigned int nphase
Definition: mcx_utils.h:262
float detradius
Definition: mcx_utils.h:179
unsigned int medianum
Definition: mcx_utils.h:175
int core
Definition: mcx_utils.h:147
void mcx_parsecmd(int argc, char *argv[], Config *cfg)
Main function to read user command line options.
Definition: mcx_utils.c:4396
void mcx_savenii(float *dat, size_t len, char *name, int type32bit, int outputformatid, Config *cfg)
Save volumetric output (fluence etc) to an Nifty format binary file.
Definition: mcx_utils.c:467
void mcx_savejdet(float *ppath, void *seeds, uint count, int doappend, Config *cfg)
Save detected photon data to mch format binary file.
Definition: mcx_utils.c:998
#define MAX_DEVICE
Definition: mcx_utils.h:50
unsigned int * vol
Definition: mcx_utils.h:192
char isspecular
Definition: mcx_utils.h:202
int mcx_parsedebugopt(char *debugopt, const char *debugflag)
Parse the debug flag in the letter format.
Definition: mcx_utils.c:4851
void mcx_python_flush()
Force matlab refresh the command window to print all buffered messages.
Definition: pmcx.cpp:1157
float r
Definition: mcx_utils.h:91
float g
Definition: mcx_utils.h:81
char issaveref
Definition: mcx_utils.h:208
float * exportfield
Definition: mcx_utils.h:225
int seed
Definition: mcx_utils.h:162
float * dy
Definition: mcx_utils.h:259
int mcx_jdatadecode(void **vol, int *ndim, uint *dims, int maxdim, char **type, cJSON *obj, Config *cfg)
Decode an ND array from JSON/JData construct and output to a volumetric array.
Definition: mcx_utils.c:4082
int devcount
Definition: mcx_utils.h:138
unsigned int seedbyte
Definition: mcx_utils.h:112
#define uint3(a, b, c)
Definition: mcx_core.cu:78
char isdumpmask
Definition: mcx_utils.h:204
uint3 crop0
Definition: mcx_utils.h:173
float * invcdf
Definition: mcx_utils.h:263
char isdumpjson
Definition: mcx_utils.h:210
void mcx_validatecfg(Config *cfg, float *detps, int dimdetps[2], int seedbyte)
Validate all input fields, and warn incompatible inputs.
Definition: mcx_utils.c:3442
float * tof
Definition: mcx_utils.h:128
float unitinmm
Definition: mcx_utils.h:220
#define MAX_PATH_LENGTH
Definition: mcx_utils.h:48
void mcx_error(const int id, const char *msg, const char *file, const int linenum)
Error reporting function.
Definition: mcx_utils.c:1259
int dimdetps[2]
buffer to receive data from cfg.detphotons field
Definition: mcxlab.cpp:81
char autopilot
Definition: mcx_utils.h:205
char isrowmajor
Definition: mcx_utils.h:194
int clock
Definition: mcx_utils.h:145
struct MCXPolarizeMedium POLMedium
float * dx
Definition: mcx_utils.h:258
float4 srcdir
Definition: mcx_utils.h:165
int mcx_loadjson(cJSON *root, Config *cfg)
Load user inputs from a .json input file.
Definition: mcx_utils.c:2129
float3 steps
Definition: mcx_utils.h:170
POLMedium * polprop
Definition: mcx_utils.h:183
double energyabs
Definition: mcx_utils.h:250
int mcx_isbinstr(const char *str)
Test if a string contains only &#39;0&#39; and &#39;1&#39;.
Definition: mcx_utils.c:4944
float4 srcparam2
Definition: mcx_utils.h:234
float * weight
Definition: mcx_utils.h:127
int regcount
Definition: mcx_utils.h:144
uint3 dim
Definition: mcx_utils.h:172
char srctype
Definition: mcx_utils.h:213