19 vfloat time,
long fparent_particle_number,
20 double fenergy,
int fs_print_listing)
22 parent_particle_number(fparent_particle_number),
23 s_print_listing(fs_print_listing),
29 s_delta_generated(0) {
30 mfunname(
"HeedPhoton::HeedPhoton(...)");
34 double length_vel = length(vel);
40 mfunname(
"void HeedPhoton::physics(void)");
43 mcout <<
"void HeedPhoton::physics(void) is starting\n";
52 hmd = etcst->
etcs->hmd.getver();
57 hmd = hmecst->
hdecs->hmd.get();
64 long qa = hmd->
matter->qatom();
66 for (na = 0; na < qa; na++) {
67 long qs = hmd->
apacs[na]->get_qshell();
75 for (na = 0; na < qa; na++) {
76 long qs = hmd->
apacs[na]->get_qshell();
78 double at_weight_quan = hmd->
matter->weight_quan(na);
79 for (ns = 0; ns < qs; ns++) {
80 cs[nst] = hmd->
apacs[na]->get_ICS(ns,
energy) * at_weight_quan;
93 s = s * 1.0e-18 *
AVOGADRO / (hmd->
matter->A_mean() / (gram / mole)) *
94 hmd->
matter->density() / (gram / cm3);
98 double path_length = 1.0 / s;
102 double xleng = -path_length * log(1.0 -
SRANLUX());
121 if (n > nst - 1) n = nst - 1;
138 mfunname(
"void HeedPhoton::physics_after_new_speed(void)");
140 mcout <<
"HeedPhoton::physics_after_new_speed is started\n";
148 hmd = etcst->
etcs->hmd.getver();
152 if (hmecst != NULL) {
153 hmd = hmecst->
hdecs->hmd.get();
163 mcout <<
"The condition:\n";
165 mcout <<
"The decay products:\n";
169 long qel = el_energy.
get_qel();
171 for (nel = 0; nel < qel; nel++) {
175 if (s_sfer_photoel == 1) {
186 double gam_1 = el_energy[nel] /
ELMAS;
187 double betta =
sqrt(1.0 -
pow(1.0 / (gam_1 + 1.0), 2.0));
188 double mod_v = betta * c_light;
191 mcout <<
"Initializing delta electron\n";
194 ActivePtr<gparticle> ac;
200 long qph = ph_energy.
get_qel();
202 for (nph = 0; nph < qph; nph++) {
207 mcout <<
"Initializing photon\n";
210 ActivePtr<gparticle> ac;
219 mcout <<
"HeedPhoton::physics_after_new_speed is exitted\n";
226 <<
" energy=" <<
energy <<
"MeV\n";
234 <<
" s_sfer_photoel=" << s_sfer_photoel
DoubleAc pow(const DoubleAc &f, double p)
DoubleAc sqrt(const DoubleAc &f)
DoubleAc fabs(const DoubleAc &f)
#define check_econd11(a, signb, stream)
float chispre(float *x, float *p, float *f, long q)
float chisran(float flat_random_number, float *x, float *f, long q)
PassivePtr< EnTransfCS > etcs
PassivePtr< HeedDeltaElectronCS > hdecs
PassivePtr< MatterDef > matter
DynLinArr< PassivePtr< const AtomPhotoAbsCS > > apacs
virtual void physics(void)
virtual void print(std::ostream &file, int l) const
void physics_after_new_speed(void)
long parent_particle_number
virtual void print(std::ostream &file, int l) const
PassivePtr< manip_absvol > amvol
manip_absvol_eid eid[pqamvol]
void up_absref(absref *f)
void random_sfer_vec(void)
long last_particle_number
AbsList< ActivePtr< gparticle > > particle_bank
#define Iprintn(file, name)
#define Iprint2n(file, name1, name2)
#define Iprint4n(file, name1, name2, name3, name4)