Monte Carlo eXtreme (MCX)
Macros
mcx_const.h File Reference

Constants assumed in MCX codes. More...

This graph shows which files directly or indirectly include this file:

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"
 

Detailed Description

Constants assumed in MCX codes.

Macro Definition Documentation

◆ BOUNDARY_DET_MASK

#define BOUNDARY_DET_MASK   0xFFFF0000

flag indicating a boundary face is used as a detector

◆ C0

#define C0   299792458000.f

speed of light in mm/s

◆ DET_MASK

#define DET_MASK   0x80000000

mask of the sign bit to get the detector

◆ FILL_MAXDETPHOTON

#define FILL_MAXDETPHOTON   3

when the detector photon buffer is filled, terminate simulation

◆ JUST_ABOVE_ONE

#define JUST_ABOVE_ONE   1.0001f

test for boundary

◆ JUST_BELOW_ONE

#define JUST_BELOW_ONE   0.9998f

test for boundary

◆ LOWER_MASK

#define LOWER_MASK   0xFF000000

mask of the lower label for SVMC

◆ MAX_PROP_AND_DETECTORS

#define MAX_PROP_AND_DETECTORS   4000

maximum number of property + number of detectors

◆ MCX_DEBUG_MOVE

#define MCX_DEBUG_MOVE   2

debug flags: 2 - save and output photon trajectory data

◆ MCX_DEBUG_MOVE_ONLY

#define MCX_DEBUG_MOVE_ONLY   8

debug flags: 8 - only save photon trajectory data, disable volume and detphoton output

◆ MCX_DEBUG_PROGRESS

#define MCX_DEBUG_PROGRESS   4

debug flags: 4 - print progress bar

◆ MCX_DEBUG_REC_LEN

#define MCX_DEBUG_REC_LEN   6

number of floating points per position saved when -D M is used for trajectory

◆ MCX_DEBUG_RNG

#define MCX_DEBUG_RNG   1

debug flags: 1 - run RNG testing kernel and return RNG numbers

◆ MCX_SRC_ARCSINE

#define MCX_SRC_ARCSINE   7

same as isotropic, but more photons near the pole dir

◆ MCX_SRC_CONE

#define MCX_SRC_CONE   2

uniform cone, srcparam1.x=max zenith angle in rad

◆ MCX_SRC_DISK

#define MCX_SRC_DISK   8

uniform 2D disk along v

◆ MCX_SRC_FOURIER

#define MCX_SRC_FOURIER   6

same as above, srcparam1.w and 2.w defines the spatial freq in x/y

◆ MCX_SRC_FOURIERX

#define MCX_SRC_FOURIERX   9

same as Fourier, except the v1/v2 and v are orthogonal

◆ MCX_SRC_FOURIERX2D

#define MCX_SRC_FOURIERX2D   10

2D (sin(kx*x+phix)*sin(ky*y+phiy)+1)/2

◆ MCX_SRC_GAUSSIAN

#define MCX_SRC_GAUSSIAN   3

Gaussian beam, srcparam1.x=beam_waist=2*sigma

◆ MCX_SRC_HYPERBOLOID_GAUSSIAN

#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

◆ MCX_SRC_ISOTROPIC

#define MCX_SRC_ISOTROPIC   1

isotropic source, no param

◆ MCX_SRC_LINE

#define MCX_SRC_LINE   12

a non-directional line source

◆ MCX_SRC_PATTERN

#define MCX_SRC_PATTERN   5

same as above, load srcpattern as intensity

◆ MCX_SRC_PATTERN3D

#define MCX_SRC_PATTERN3D   15

a 3D pattern source, starting from srcpos, srcparam1.{x,y,z} define the x/y/z dimensions

◆ MCX_SRC_PENCIL

#define MCX_SRC_PENCIL   0

default-Pencil beam src, no param

◆ MCX_SRC_PENCILARRAY

#define MCX_SRC_PENCILARRAY   14

a rectangular array of pencil beams

◆ MCX_SRC_PLANAR

#define MCX_SRC_PLANAR   4

quadrilateral src, vectors spanned by srcparam{1}.{x,y,z}

◆ MCX_SRC_RING

#define MCX_SRC_RING   17

ring/ring-sector source, scrparam1.{x,y} defines the outer/inner radius, srcparam1.{z,w} defines start/end angle

◆ MCX_SRC_SLIT

#define MCX_SRC_SLIT   13

a collimated line source

◆ MCX_SRC_ZGAUSSIAN

#define MCX_SRC_ZGAUSSIAN   11

Gaussian zenith anglular distribution

◆ MED_MASK

#define MED_MASK   0x7FFFFFFF

mask of the remaining bits to get the medium index

◆ MEDIA_2LABEL_MIX

#define MEDIA_2LABEL_MIX   98

media format: {[int: label1][int: label2][float32: label1 %]} -> 32bit:{[short 0-32767 scaled label1 %],[byte: label2],[byte: label1]}

◆ MEDIA_2LABEL_SPLIT

#define MEDIA_2LABEL_SPLIT   97

media format: 64bit:{[byte: lower label][byte: upper label][byte*3: reference point][byte*3: normal vector]}

◆ MEDIA_AS_F2H

#define MEDIA_AS_F2H   100

media format: {[float32: mua][float32: mus]} -> 32bit:{[half: mua],{half: mus}}

◆ MEDIA_AS_HALF

#define MEDIA_AS_HALF   102

media format: 32bit:{[half: mua],[half: mus]}

◆ MEDIA_AS_SHORT

#define MEDIA_AS_SHORT   104

media format: 32bit:{[short: mua],[short: mus]}

◆ MEDIA_ASGN_BYTE

#define MEDIA_ASGN_BYTE   103

media format: 32bit:{[byte: mua],[byte: mus],[byte: g],[byte: n]}

◆ MEDIA_LABEL_HALF

#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]}

◆ MEDIA_MUA_FLOAT

#define MEDIA_MUA_FLOAT   101

media format: 32bit:{[float32: mua]}

◆ NANGLES

#define NANGLES   1000

number of discretization points in scattering angles

◆ NO_LAUNCH

#define NO_LAUNCH   9999

when fail to launch, for debug

◆ ONE_PI

#define ONE_PI   3.1415926535897932f

pi

◆ OUTSIDE_VOLUME_MAX

#define OUTSIDE_VOLUME_MAX   0x7FFFFFFF

flag indicating the index is outside of the volume from x=0/y=0/z=0

◆ OUTSIDE_VOLUME_MIN

#define OUTSIDE_VOLUME_MIN   0xFFFFFFFF

flag indicating the index is outside of the volume from x=xmax,y=ymax,z=zmax

◆ R_C0

#define R_C0   3.335640951981520e-12f

1/C0 in s/mm

◆ R_PI

#define R_PI   0.318309886183791f

1/pi

◆ SAME_VOXEL

#define SAME_VOXEL   -9999.f

scatter within a voxel

◆ SAVE_DETID

#define SAVE_DETID (   a)    ((a) & 0x1)

mask to save detector ID

◆ SAVE_IQUV

#define SAVE_IQUV (   a)    ((a)>>7 & 0x1)

save stokes parameters

◆ SAVE_MOM

#define SAVE_MOM (   a)    ((a)>>3 & 0x1)

output momentum transfer

◆ SAVE_NSCAT

#define SAVE_NSCAT (   a)    ((a)>>1 & 0x1)

output partial scattering counts

◆ SAVE_PEXIT

#define SAVE_PEXIT (   a)    ((a)>>4 & 0x1)

save exit positions

◆ SAVE_PPATH

#define SAVE_PPATH (   a)    ((a)>>2 & 0x1)

output partial path

◆ SAVE_VEXIT

#define SAVE_VEXIT (   a)    ((a)>>5 & 0x1)

save exit vector/directions

◆ SAVE_W0

#define SAVE_W0 (   a)    ((a)>>6 & 0x1)

save initial weight

◆ SEED_FROM_FILE

#define SEED_FROM_FILE   -999

special flag indicating to read seeds from an mch file for replay

◆ SET_SAVE_DETID

#define SET_SAVE_DETID (   a)    ((a) | 0x1 )

mask to save detector ID

◆ SET_SAVE_IQUV

#define SET_SAVE_IQUV (   a)    ((a) | 0x1<<7)

save stokes parameters

◆ SET_SAVE_MOM

#define SET_SAVE_MOM (   a)    ((a) | 0x1<<3)

output momentum transfer

◆ SET_SAVE_NSCAT

#define SET_SAVE_NSCAT (   a)    ((a) | 0x1<<1)

output partial scattering counts

◆ SET_SAVE_PEXIT

#define SET_SAVE_PEXIT (   a)    ((a) | 0x1<<4)

save exit positions

◆ SET_SAVE_PPATH

#define SET_SAVE_PPATH (   a)    ((a) | 0x1<<2)

output partial path

◆ SET_SAVE_VEXIT

#define SET_SAVE_VEXIT (   a)    ((a) | 0x1<<5)

save exit vector/directions

◆ SET_SAVE_W0

#define SET_SAVE_W0 (   a)    ((a) | 0x1<<6)

save initial weight

◆ TWO_PI

#define TWO_PI   6.28318530717959f

2*pi

◆ UNSET_SAVE_DETID

#define UNSET_SAVE_DETID (   a)    ((a) & ~(0x1) )

mask to save detector ID

◆ UNSET_SAVE_IQUV

#define UNSET_SAVE_IQUV (   a)    ((a) & ~(0x1<<7))

unsave stokes parameters

◆ UNSET_SAVE_MOM

#define UNSET_SAVE_MOM (   a)    ((a) & ~(0x1<<3))

output momentum transfer

◆ UNSET_SAVE_NSCAT

#define UNSET_SAVE_NSCAT (   a)    ((a) & ~(0x1<<1))

output partial scattering counts

◆ UNSET_SAVE_PEXIT

#define UNSET_SAVE_PEXIT (   a)    ((a) & ~(0x1<<4))

save exit positions

◆ UNSET_SAVE_PPATH

#define UNSET_SAVE_PPATH (   a)    ((a) & ~(0x1<<2))

output partial path

◆ UNSET_SAVE_VEXIT

#define UNSET_SAVE_VEXIT (   a)    ((a) & ~(0x1<<5))

save exit vector/directions

◆ UNSET_SAVE_W0

#define UNSET_SAVE_W0 (   a)    ((a) & ~(0x1<<6))

save initial weight

◆ UPPER_MASK

#define UPPER_MASK   0x00FF0000

mask of the upper label for SVMC