21 int fs_loss_only,
int fs_print_listing)
22 :
eparticle(primvol, pt, vel, time, fpardef),
23 s_print_listing(fs_print_listing),
24 transferred_energy_in_step(0.0),
26 s_loss_only(fs_loss_only) {
28 mfunname(
"HeedParticle::HeedParticle(...)");
38 mfunname(
"void HeedParticle::physics(void)");
40 mcout <<
"HeedParticle::physics is started\n";
53 if (etcst == NULL)
return;
62 long qa = amatter->
qatom();
65 for (
long na = 0; na < qa; ++na) {
67 long qs = ahmd->
apacs[na]->get_qshell();
68 for (
long ns = 0; ns < qs; ++ns) {
72 if (aetcs == aetcs_single_transf && na == na_single_transf &&
73 ns == ns_single_transf) {
77 if (aetcs->
quan[na][ns] > 0.0) {
82 " aetcs->quan[na][ns]=" << aetcs->
quan[na][ns]
98 for (
long nt = 0; nt < qt; ++nt) {
108 double r = t_hisran_step_ar<double, DynLinArr<double>,
110 pcm_e, aetcs->
fadda[na][ns], rn);
121#ifdef SINGLE_TRANSFER
122 double arange = 0.5 * range;
124 double arange =
SRANLUX() * range;
126 point pt = curpt + dir * arange;
132 mcout <<
"generating new cluster\n";
141 double theta_p, theta_t;
148 double speed = length(vel);
149 double time = arange / speed;
151 mcout <<
"generating new virtual photon\n";
160 ActivePtr<gparticle> ac;
170 mcout <<
"Exiting HeedParticle::physics\n";
185 Ifile <<
" nt natom nshell transferred_energy\n";
186 for (
long nt = 0; nt <
qtransfer; nt++) {
187 Ifile << std::setw(3) << nt <<
' ' << std::setw(3) <<
natom[nt] <<
' '
188 << std::setw(3) <<
nshell[nt] <<
' ' << std::setw(12)
DoubleAc fabs(const DoubleAc &f)
#define check_econd11a(a, signb, add, stream)
void allocate_block(long fqel)
void append(const T &val)
PassivePtr< EnTransfCS > etcs
DynLinArr< DynLinArr< double > > quan
PassivePtr< HeedMatterDef > hmd
DynLinArr< DynLinArr< DynLinArr< double > > > fadda
Integral, normalised to unity.
PassivePtr< MatterDef > matter
PassivePtr< EnergyMesh > energy_mesh
DynLinArr< PassivePtr< const AtomPhotoAbsCS > > apacs
HeedParticle(void)
Constructors.
double transferred_energy_in_step
virtual void physics(void)
BlkArr< double > transferred_energy
virtual void print(std::ostream &file, int l) const
double mass
Mass (not mass * speed_of_light^2)
virtual void print(std::ostream &file, int l) const
void print_notation(std::ostream &file) const
PassivePtr< manip_absvol > amvol
manip_absvol_eid eid[pqamvol]
void up_absref(absref *f)
void random_conic_vec(double theta)
void down(const basis *fabas)
BlkArr< HeedCluster > cluster_bank
long last_particle_number
AbsList< ActivePtr< gparticle > > particle_bank
particle_def electron_def("electron", "e-", electron_mass_c2/c_squared, electron_charge, 1, 0, 0.5, spin_def(0.0, 0.0))
void theta_two_part(double Ep0, double Ep1, double Mp, double Mt, double &theta_p, double &theta_t)
long pois(double AMU, int &IERROR)
#define Iprint(file, name)
#define Iprintn(file, name)
#define Iprint2n(file, name1, name2)