Monte Carlo eXtreme (MCX)
|
Constants assumed in MCX codes. More...
Go to the source code of this file.
Macros | |
#define | MCX_VERSION "v2023" |
#define | MCX_VERSION_MAJOR 2 |
#define | MCX_VERSION_MINOR 0 |
#define | ONE_PI 3.1415926535897932f |
#define | TWO_PI 6.28318530717959f |
#define | R_PI 0.318309886183791f |
#define | C0 299792458000.f |
#define | R_C0 3.335640951981520e-12f |
#define | JUST_ABOVE_ONE 1.0001f |
#define | JUST_BELOW_ONE 0.9998f |
#define | SAME_VOXEL -9999.f |
#define | NO_LAUNCH 9999 |
#define | FILL_MAXDETPHOTON 3 |
#define | OUTSIDE_VOLUME_MIN 0xFFFFFFFF |
#define | OUTSIDE_VOLUME_MAX 0x7FFFFFFF |
#define | BOUNDARY_DET_MASK 0xFFFF0000 |
#define | MAX_PROP_AND_DETECTORS 4000 |
#define | SEED_FROM_FILE -999 |
#define | NANGLES 1000 |
#define | SIGN_BIT 0x80000000U |
#define | DET_MASK 0x80000000 |
#define | MED_MASK 0x7FFFFFFF |
#define | LOWER_MASK 0xFF000000 |
#define | UPPER_MASK 0x00FF0000 |
#define | MCX_DEBUG_RNG 1 |
#define | MCX_DEBUG_MOVE 2 |
#define | MCX_DEBUG_PROGRESS 4 |
#define | MCX_DEBUG_MOVE_ONLY 8 |
#define | MEDIA_2LABEL_SPLIT 97 |
#define | MEDIA_2LABEL_MIX 98 |
#define | MEDIA_LABEL_HALF 99 |
#define | MEDIA_AS_F2H 100 |
#define | MEDIA_MUA_FLOAT 101 |
#define | MEDIA_AS_HALF 102 |
#define | MEDIA_ASGN_BYTE 103 |
#define | MEDIA_AS_SHORT 104 |
#define | MCX_DEBUG_REC_LEN 6 |
#define | MCX_SRC_PENCIL 0 |
#define | MCX_SRC_ISOTROPIC 1 |
#define | MCX_SRC_CONE 2 |
#define | MCX_SRC_GAUSSIAN 3 |
#define | MCX_SRC_PLANAR 4 |
#define | MCX_SRC_PATTERN 5 |
#define | MCX_SRC_FOURIER 6 |
#define | MCX_SRC_ARCSINE 7 |
#define | MCX_SRC_DISK 8 |
#define | MCX_SRC_FOURIERX 9 |
#define | MCX_SRC_FOURIERX2D 10 |
#define | MCX_SRC_ZGAUSSIAN 11 |
#define | MCX_SRC_LINE 12 |
#define | MCX_SRC_SLIT 13 |
#define | MCX_SRC_PENCILARRAY 14 |
#define | MCX_SRC_PATTERN3D 15 |
#define | MCX_SRC_HYPERBOLOID_GAUSSIAN 16 |
#define | MCX_SRC_RING 17 |
#define | SAVE_DETID(a) ((a) & 0x1) |
#define | SAVE_NSCAT(a) ((a)>>1 & 0x1) |
#define | SAVE_PPATH(a) ((a)>>2 & 0x1) |
#define | SAVE_MOM(a) ((a)>>3 & 0x1) |
#define | SAVE_PEXIT(a) ((a)>>4 & 0x1) |
#define | SAVE_VEXIT(a) ((a)>>5 & 0x1) |
#define | SAVE_W0(a) ((a)>>6 & 0x1) |
#define | SAVE_IQUV(a) ((a)>>7 & 0x1) |
#define | SET_SAVE_DETID(a) ((a) | 0x1 ) |
#define | SET_SAVE_NSCAT(a) ((a) | 0x1<<1) |
#define | SET_SAVE_PPATH(a) ((a) | 0x1<<2) |
#define | SET_SAVE_MOM(a) ((a) | 0x1<<3) |
#define | SET_SAVE_PEXIT(a) ((a) | 0x1<<4) |
#define | SET_SAVE_VEXIT(a) ((a) | 0x1<<5) |
#define | SET_SAVE_W0(a) ((a) | 0x1<<6) |
#define | SET_SAVE_IQUV(a) ((a) | 0x1<<7) |
#define | UNSET_SAVE_DETID(a) ((a) & ~(0x1) ) |
#define | UNSET_SAVE_NSCAT(a) ((a) & ~(0x1<<1)) |
#define | UNSET_SAVE_PPATH(a) ((a) & ~(0x1<<2)) |
#define | UNSET_SAVE_MOM(a) ((a) & ~(0x1<<3)) |
#define | UNSET_SAVE_PEXIT(a) ((a) & ~(0x1<<4)) |
#define | UNSET_SAVE_VEXIT(a) ((a) & ~(0x1<<5)) |
#define | UNSET_SAVE_W0(a) ((a) & ~(0x1<<6)) |
#define | UNSET_SAVE_IQUV(a) ((a) & ~(0x1<<7)) |
#define | S_RED "\x1b[31m" |
#define | S_GREEN "\x1b[32m" |
#define | S_YELLOW "\x1b[33m" |
#define | B_WHITE "\x1b[100m" |
#define | S_BLUE "\x1b[34m" |
#define | S_MAGENTA "\x1b[35m" |
#define | L_MAGENTA "\x1b[95m" |
#define | S_CYAN "\x1b[36m" |
#define | S_BOLD "\x1b[1m" |
#define | S_ITALIC "\x1b[3m" |
#define | S_RESET "\x1b[0m" |
Constants assumed in MCX codes.
#define BOUNDARY_DET_MASK 0xFFFF0000 |
flag indicating a boundary face is used as a detector
#define C0 299792458000.f |
speed of light in mm/s
#define DET_MASK 0x80000000 |
mask of the sign bit to get the detector
#define FILL_MAXDETPHOTON 3 |
when the detector photon buffer is filled, terminate simulation
#define JUST_ABOVE_ONE 1.0001f |
test for boundary
#define JUST_BELOW_ONE 0.9998f |
test for boundary
#define LOWER_MASK 0xFF000000 |
mask of the lower label for SVMC
#define MAX_PROP_AND_DETECTORS 4000 |
maximum number of property + number of detectors
#define MCX_DEBUG_MOVE 2 |
debug flags: 2 - save and output photon trajectory data
#define MCX_DEBUG_MOVE_ONLY 8 |
debug flags: 8 - only save photon trajectory data, disable volume and detphoton output
#define MCX_DEBUG_PROGRESS 4 |
debug flags: 4 - print progress bar
#define MCX_DEBUG_REC_LEN 6 |
number of floating points per position saved when -D M is used for trajectory
#define MCX_DEBUG_RNG 1 |
debug flags: 1 - run RNG testing kernel and return RNG numbers
#define MCX_SRC_ARCSINE 7 |
same as isotropic, but more photons near the pole dir
#define MCX_SRC_CONE 2 |
uniform cone, srcparam1.x=max zenith angle in rad
#define MCX_SRC_DISK 8 |
uniform 2D disk along v
#define MCX_SRC_FOURIER 6 |
same as above, srcparam1.w and 2.w defines the spatial freq in x/y
#define MCX_SRC_FOURIERX 9 |
same as Fourier, except the v1/v2 and v are orthogonal
#define MCX_SRC_FOURIERX2D 10 |
2D (sin(kx*x+phix)*sin(ky*y+phiy)+1)/2
#define MCX_SRC_GAUSSIAN 3 |
Gaussian beam, srcparam1.x=beam_waist=2*sigma
#define MCX_SRC_HYPERBOLOID_GAUSSIAN 16 |
Gaussian-beam with spot focus, scrparam1.{x,y,z} define beam waist, distance from source to focus, rayleigh range
#define MCX_SRC_ISOTROPIC 1 |
isotropic source, no param
#define MCX_SRC_LINE 12 |
a non-directional line source
#define MCX_SRC_PATTERN 5 |
same as above, load srcpattern as intensity
#define MCX_SRC_PATTERN3D 15 |
a 3D pattern source, starting from srcpos, srcparam1.{x,y,z} define the x/y/z dimensions
#define MCX_SRC_PENCIL 0 |
default-Pencil beam src, no param
#define MCX_SRC_PENCILARRAY 14 |
a rectangular array of pencil beams
#define MCX_SRC_PLANAR 4 |
quadrilateral src, vectors spanned by srcparam{1}.{x,y,z}
#define MCX_SRC_RING 17 |
ring/ring-sector source, scrparam1.{x,y} defines the outer/inner radius, srcparam1.{z,w} defines start/end angle
#define MCX_SRC_SLIT 13 |
a collimated line source
#define MCX_SRC_ZGAUSSIAN 11 |
Gaussian zenith anglular distribution
#define MED_MASK 0x7FFFFFFF |
mask of the remaining bits to get the medium index
#define MEDIA_2LABEL_MIX 98 |
media format: {[int: label1][int: label2][float32: label1 %]} -> 32bit:{[short 0-32767 scaled label1 %],[byte: label2],[byte: label1]}
#define MEDIA_2LABEL_SPLIT 97 |
media format: 64bit:{[byte: lower label][byte: upper label][byte*3: reference point][byte*3: normal vector]}
#define MEDIA_AS_F2H 100 |
media format: {[float32: mua][float32: mus]} -> 32bit:{[half: mua],{half: mus}}
#define MEDIA_AS_HALF 102 |
media format: 32bit:{[half: mua],[half: mus]}
#define MEDIA_AS_SHORT 104 |
media format: 32bit:{[short: mua],[short: mus]}
#define MEDIA_ASGN_BYTE 103 |
media format: 32bit:{[byte: mua],[byte: mus],[byte: g],[byte: n]}
#define MEDIA_LABEL_HALF 99 |
media format: {[float32: mua/mus/g/n][float32: 1/2/3/4][float32: label]} -> 32bit:{[half: mua/mus/g/n][int16: [B15-B16: 0/1/2/3][B1-B14: tissue type]}
#define MEDIA_MUA_FLOAT 101 |
media format: 32bit:{[float32: mua]}
#define NANGLES 1000 |
number of discretization points in scattering angles
#define NO_LAUNCH 9999 |
when fail to launch, for debug
#define ONE_PI 3.1415926535897932f |
pi
#define OUTSIDE_VOLUME_MAX 0x7FFFFFFF |
flag indicating the index is outside of the volume from x=0/y=0/z=0
#define OUTSIDE_VOLUME_MIN 0xFFFFFFFF |
flag indicating the index is outside of the volume from x=xmax,y=ymax,z=zmax
#define R_C0 3.335640951981520e-12f |
1/C0 in s/mm
#define R_PI 0.318309886183791f |
1/pi
#define SAME_VOXEL -9999.f |
scatter within a voxel
#define SAVE_DETID | ( | a | ) | ((a) & 0x1) |
mask to save detector ID
#define SAVE_IQUV | ( | a | ) | ((a)>>7 & 0x1) |
save stokes parameters
#define SAVE_MOM | ( | a | ) | ((a)>>3 & 0x1) |
output momentum transfer
#define SAVE_NSCAT | ( | a | ) | ((a)>>1 & 0x1) |
output partial scattering counts
#define SAVE_PEXIT | ( | a | ) | ((a)>>4 & 0x1) |
save exit positions
#define SAVE_PPATH | ( | a | ) | ((a)>>2 & 0x1) |
output partial path
#define SAVE_VEXIT | ( | a | ) | ((a)>>5 & 0x1) |
save exit vector/directions
#define SAVE_W0 | ( | a | ) | ((a)>>6 & 0x1) |
save initial weight
#define SEED_FROM_FILE -999 |
special flag indicating to read seeds from an mch file for replay
#define SET_SAVE_DETID | ( | a | ) | ((a) | 0x1 ) |
mask to save detector ID
#define SET_SAVE_IQUV | ( | a | ) | ((a) | 0x1<<7) |
save stokes parameters
#define SET_SAVE_MOM | ( | a | ) | ((a) | 0x1<<3) |
output momentum transfer
#define SET_SAVE_NSCAT | ( | a | ) | ((a) | 0x1<<1) |
output partial scattering counts
#define SET_SAVE_PEXIT | ( | a | ) | ((a) | 0x1<<4) |
save exit positions
#define SET_SAVE_PPATH | ( | a | ) | ((a) | 0x1<<2) |
output partial path
#define SET_SAVE_VEXIT | ( | a | ) | ((a) | 0x1<<5) |
save exit vector/directions
#define SET_SAVE_W0 | ( | a | ) | ((a) | 0x1<<6) |
save initial weight
#define TWO_PI 6.28318530717959f |
2*pi
#define UNSET_SAVE_DETID | ( | a | ) | ((a) & ~(0x1) ) |
mask to save detector ID
#define UNSET_SAVE_IQUV | ( | a | ) | ((a) & ~(0x1<<7)) |
unsave stokes parameters
#define UNSET_SAVE_MOM | ( | a | ) | ((a) & ~(0x1<<3)) |
output momentum transfer
#define UNSET_SAVE_NSCAT | ( | a | ) | ((a) & ~(0x1<<1)) |
output partial scattering counts
#define UNSET_SAVE_PEXIT | ( | a | ) | ((a) & ~(0x1<<4)) |
save exit positions
#define UNSET_SAVE_PPATH | ( | a | ) | ((a) & ~(0x1<<2)) |
output partial path
#define UNSET_SAVE_VEXIT | ( | a | ) | ((a) & ~(0x1<<5)) |
save exit vector/directions
#define UNSET_SAVE_W0 | ( | a | ) | ((a) & ~(0x1<<6)) |
save initial weight
#define UPPER_MASK 0x00FF0000 |
mask of the upper label for SVMC