-int raysum_collect(RAYSUM *rs, const DETECTOR *det, const PICTURE *pic, const int start_view,
- const int trace, const int unit_pulse);
-void rayview(const PICTURE *pic, DETARRAY *darray, const DETECTOR *det,
- const double xd1, const double yd1, const double xd2, const double yd2,
- const double xs1, const double ys1, const double xs2, const double ys2, const int unit_pulse);
-void rs_trace_showprm (const char *label, const char *fmt, int row, int color, ...);
+int raysum_collect(RAYSUM *rs, const DETECTOR *det, const PHANTOM *phm, const int start_view, const int trace, const int unit_pulse);
+void rayview(const PHANTOM *phm, DETARRAY *darray, const DETECTOR *det, const double xd1, const double yd1, const double xd2, const double yd2, const double xs1, const double ys1, const double xs2, const double ys2, const int unit_pulse);
+double phm_ray_attenuation (const PHANTOM *phm, const double x1, const double y1, const double x2, const double y2);
+double pelm_ray_attenuation (const PELM *obj, const double x1, const double y1, const double x2, const double y2);
+int pelm_clip_line (const PELM *obj, double *x1, double *y1, double *x2, double *y2);
+void raysum_trace_show_param (const char *label, const char *fmt, int row, int color, ...);
+
+/* scanner.c */
+DETECTOR *detector_create(const PHANTOM *phm, int geometry, int ndet, int nview, int nsample, const double rot_anglen);
+void detector_free(DETECTOR *det);
+