123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960 |
- #include "defs.h"
- extern char errstr[200];
- int terma_kerma(FLOAT_GRID *deff, FLOAT_GRID *terma, FLOAT_GRID *kermac,
- MONO_KERNELS *mono, FLOAT_GRID *terma_mask)
- {
-
- int i, j, k, e;
- float kermac0, terma0;
-
-
- kermac0 = terma0 = 0.0;
- for (e=0;e<mono->nkernels;e++)
- {
- kermac0 = mono->fluence[e]*mono->energy[e]*mono->mu_en[e];
- terma0 = mono->fluence[e]*mono->energy[e]*mono->mu[e];
- }
- for (j=0;j<deff->y_count;j++)
- for (k=0;k<deff->z_count;k++)
- for (i=0;i<deff->x_count;i++)
- if (GRID_VALUE(terma_mask,i,j,k) > 0)
- {
-
-
-
-
- for (e=0;e<mono->nkernels;e++)
- {
- GRID_VALUE(terma,i,j,k) += mono->fluence[e]*mono->energy[e]*mono->mu[e]
- * exp(-mono->mu[e]*GRID_VALUE(deff,i,j,k));
- GRID_VALUE(kermac,i,j,k) += mono->fluence[e]*mono->energy[e]*mono->mu_en[e]
- * exp(-mono->mu[e]*GRID_VALUE(deff,i,j,k));
- }
-
-
- GRID_VALUE(terma,i,j,k) *= GRID_VALUE(terma_mask,i,j,k);
- GRID_VALUE(kermac,i,j,k) *= GRID_VALUE(terma_mask,i,j,k);
-
- if (terma0 <= 0.0 || kermac0 <= 0.0)
- nrerror("Input spectrum must not sum to zero.");
- else
- GRID_VALUE(terma,i,j,k) *= (GRID_VALUE(kermac,i,j,k)/GRID_VALUE(terma,i,j,k))
- /(kermac0/terma0);
- }
- else
- {
- GRID_VALUE(terma,i,j,k) = 0.0;
- GRID_VALUE(kermac,i,j,k) = 0.0;
- }
- return(SUCCESS);
- }
|