17 2 * CLHEP::pi2 * CLHEP::fine_structure_const / CLHEP::electron_mass_c2;
51 PhotoAbsCS(
const std::string& fname,
int fZ,
double fthreshold);
66 virtual double get_CS(
double energy)
const = 0;
70 virtual void scale(
double fact) = 0;
72 virtual void print(std::ostream& file,
int l)
const;
109 virtual double get_CS(
double energy)
const;
112 virtual void scale(
double fact);
114 virtual void print(std::ostream& file,
int l)
const;
129 virtual double get_CS(
double energy)
const;
131 virtual void scale(
double fact);
133 virtual void print(std::ostream& file,
int l)
const;
166 const std::string& ffile_name);
169 const std::vector<double>& fener,
170 const std::vector<double>& fcs);
176 int l,
double E0,
double yw,
double ya,
double P,
191 virtual double get_CS(
double energy)
const;
195 virtual void scale(
double fact);
196 virtual void print(std::ostream& file,
int l)
const;
203 std::string file_name;
205 std::vector<double> ener;
207 std::vector<double> cs;
222 double fpower = 2.75);
225 virtual double get_CS(
double energy)
const;
227 virtual void scale(
double fact);
228 virtual void print(std::ostream& file,
int l)
const;
258 int get_channel(std::vector<double>& felectron_energy,
259 std::vector<double>& fphoton_energy)
const;
270 const std::vector<double>& felectron_energy,
271 const std::vector<double>& fphoton_energy,
274 virtual void print(std::ostream& file,
int l)
const;
300 virtual double get_ACS(
double energy)
const = 0;
304 virtual double get_ACS(
int nshell,
double energy)
const = 0;
307 double energy2)
const = 0;
311 virtual double get_ICS(
double energy)
const = 0;
316 virtual double get_TICS(
double energy,
317 double factual_minimal_threshold)
const;
322 double factual_minimal_threshold)
const;
324 virtual double get_ICS(
int nshell,
double energy)
const = 0;
326 virtual double get_TICS(
int nshell,
double energy,
327 double factual_minimal_threshold)
const;
330 double energy2)
const = 0;
333 double factual_minimal_threshold)
const;
349 std::vector<double>& el_energy,
350 std::vector<double>& ph_energy)
const;
361 virtual void print(std::ostream& file,
int l)
const;
380 std::vector<AtomicSecondaryProducts>
asp;
401 virtual double get_ACS(
double energy)
const;
403 virtual double get_ACS(
int nshell,
double energy)
const;
405 double energy2y)
const;
406 virtual double get_ICS(
double energy)
const;
408 virtual double get_ICS(
int nshell,
double energy)
const;
410 double energy2)
const;
413 return acs[nshell]->get_number();
415 virtual void print(std::ostream& file,
int l)
const;
423 std::vector<ActivePtr<PhotoAbsCS> >
acs;
432 virtual double get_ACS(
double energy)
const;
434 virtual double get_ACS(
int nshell,
double energy)
const;
436 double energy2)
const;
438 virtual double get_ICS(
double energy)
const;
440 virtual double get_ICS(
int nshell,
double energy)
const;
442 double energy2)
const;
445 return acs[nshell]->get_number();
450 virtual void print(std::ostream& file,
int l)
const;
469 const std::string& fsimple_table_file_name,
470 const std::string& fname =
"none",
471 double fminimal_threshold = 0.0);
488 const std::string& fBT_file_name,
int id,
489 double fminimal_threshold = 0.0);
508 const std::string& fFitBT_file_name,
509 int id,
int s_no_scale,
510 double fminimal_threshold = 0.0);
533 const std::string& fFitBT_file_name,
534 const std::string& fsimple_table_file_name,
double emax_repl,
535 int id,
double fminimal_threshold = 0.0);
545 std::vector<ActivePtr<PhotoAbsCS> >
acs;
576#define CALC_W_USING_CHARGES
601 virtual double get_ACS(
double energy)
const;
605 virtual double get_ICS(
double energy)
const;
635 virtual void print(std::ostream& file,
int l)
const;
640 std::vector<int> qatom_ps;
641 std::vector<PassivePtr<const AtomPhotoAbsCS> > atom;
647std::ostream&
operator<<(std::ostream& file,
const MolecPhotoAbsCS& f);
Active pointer or automatic container or controlling pointer.
Atomic photoabsorption cross-section abstract base class.
AtomPhotoAbsCS()
Default constructor.
std::vector< bool > s_ignore_shell
virtual void remove_shell(int nshell)
Deactivate a sub-shell. Set s_ignore_shell flag to true.
std::string name
Name of the atom.
virtual double get_I_min() const
Get the lowest ionization threshold among all shells.
virtual double get_ACS(double energy) const =0
virtual double get_integral_ICS(double energy1, double energy2) const =0
Integrated photo-ionization cross-section over a given interval.
virtual int get_main_shell_number(int nshell) const =0
virtual double get_ICS(int nshell, double energy) const =0
Sub-shell photo-ionization cross-section at a given energy.
virtual void print(std::ostream &file, int l) const
virtual double get_TICS(double energy, double factual_minimal_threshold) const
int get_Z() const
Get the atomic number.
virtual double get_threshold(int nshell) const =0
Get the ionization threshold for a given shell.
virtual double get_ICS(double energy) const =0
virtual AtomPhotoAbsCS * copy() const =0
virtual double get_ACS(int nshell, double energy) const =0
Sub-shell photo-absorption cross-section [Mbarn] at a given energy [MeV].
virtual double get_integral_TICS(double energy1, double energy2, double factual_minimal_threshold) const
Integral photo-ionization cross-section with redefined threshold.
virtual void restore_shell(int nshell)
Activate a sub-shell. Set s_ignore_shell flag to false.
virtual double get_integral_ACS(int nshell, double energy1, double energy2) const =0
Integrated sub-shell photo-absorption cross-section.
virtual double get_integral_ICS(int nshell, double energy1, double energy2) const =0
Integrated sub-shell photo-ionization cross-section.
int qshell
Number of shells.
unsigned int get_qshell() const
Get the number of shells.
virtual void get_escape_particles(const int nshell, double energy, std::vector< double > &el_energy, std::vector< double > &ph_energy) const
std::vector< AtomicSecondaryProducts > asp
Sampling of relaxation products for each shell.
AtomicSecondaryProducts * get_asp(int nshell)
virtual double get_integral_ACS(double energy1, double energy2) const =0
Integrated photo-absorption cross-section overa given interval.
int get_channel(std::vector< double > &felectron_energy, std::vector< double > &fphoton_energy) const
AtomicSecondaryProducts()
Constructor.
virtual ~AtomicSecondaryProducts()
Destructor.
virtual void print(std::ostream &file, int l) const
std::vector< std::vector< double > > electron_energy
std::vector< std::vector< double > > photon_energy
void add_channel(double fchannel_prob_dens, const std::vector< double > &felectron_energy, const std::vector< double > &fphoton_energy, int s_all_rest=0)
std::vector< double > channel_prob_dens
Smoothed/smeared photoabsorption cross-section.
virtual AveragePhotoAbsCS * copy() const
virtual double get_CS(double energy) const
Retrieve cross-section [Mb] at a given energy [MeV].
virtual void print(std::ostream &file, int l) const
virtual double get_integral_CS(double energy1, double energy2) const
Retrieve integral cross-section [Mb * MeV] in a given interval [MeV].
AveragePhotoAbsCS()
Default constructor.
virtual void scale(double fact)
Multiply by some factor. Can be useful for debugging and other purposes.
virtual ~AveragePhotoAbsCS()
Destructor.
Atomic photo-absorption with excitation.
double integ_abs_before_corr
void replace_shells_by_average(double fwidth, double fstep, long fmax_q_step)
virtual int get_main_shell_number(int nshell) const
std::vector< ActivePtr< PhotoAbsCS > > acs
double height_of_excitation
Excitation cross-section (assumed in the lowest shell).
virtual double get_threshold(int nshell) const
Get the ionization threshold for a given shell.
static const int s_add_excitations_to_normalize
virtual ExAtomPhotoAbsCS * copy() const
double exener[2]
Boundaries of excitation.
double integ_ioniz_after_corr
virtual double get_integral_ACS(double energy1, double energy2) const
Integrated photo-absorption cross-section overa given interval.
virtual double get_ACS(double energy) const
static const int s_scale_to_normalize_if_more
std::string threshold_file_name
virtual ~ExAtomPhotoAbsCS()
Destructor.
ExAtomPhotoAbsCS()
Default constructor.
std::string simple_table_file_name
virtual void print(std::ostream &file, int l) const
virtual double get_ICS(double energy) const
virtual double get_integral_ICS(double energy1, double energy2) const
Integrated photo-ionization cross-section over a given interval.
double integ_abs_after_corr
virtual void print(std::ostream &file, int l) const
virtual double get_CS(double energy) const
Retrieve cross-section [Mb] at a given energy [MeV].
virtual double get_integral_CS(double energy1, double energy2) const
Retrieve integral cross-section [Mb * MeV] in a given interval [MeV].
HydrogenPhotoAbsCS()
Constructor.
virtual ~HydrogenPhotoAbsCS()
Destructor.
virtual void scale(double fact)
Multiply by some factor. Can be useful for debugging and other purposes.
virtual HydrogenPhotoAbsCS * copy() const
const PassivePtr< const AtomPhotoAbsCS > get_atom(const int n)
virtual double get_ACS(double energy) const
Photo-absorption cross-section [Mbarn] at a given energy [MeV].
double get_W() const
Retrieve W value [MeV].
int get_qatom_ps(const int n) const
Number of atoms of a particular sort in the molecule.
int get_total_Z() const
Sum up the atomic numbers of all atoms in the molecule.
virtual double get_ICS(double energy) const
Photo-ionization cross-section [Mbarn] at a given energy [MeV].
virtual double get_integral_ICS(double energy1, double energy2) const
Integral photo-ionization cross-section.
virtual ~MolecPhotoAbsCS()
Destructor.
double get_F() const
Retrieve Fano factor.
MolecPhotoAbsCS()
Default constructor.
virtual double get_integral_ACS(double energy1, double energy2) const
Integral photo-absorption cross-section.
virtual void print(std::ostream &file, int l) const
int get_qatom() const
Total number of atoms of all sorts in the molecule.
Simple phenomenological CS for any shell (analytic formula).
virtual double get_integral_CS(double energy1, double energy2) const
Retrieve integral cross-section [Mb * MeV] in a given interval [MeV].
virtual ~PhenoPhotoAbsCS()
Destructor.
virtual PhenoPhotoAbsCS * copy() const
virtual double get_CS(double energy) const
Retrieve cross-section [Mb] at a given energy [MeV].
virtual void print(std::ostream &file, int l) const
PhenoPhotoAbsCS()
Default constructor.
virtual void scale(double fact)
Multiply by some factor. Can be useful for debugging and other purposes.
PhotoAbsCS()
Default constructor.
double get_threshold() const
Return the threshold energy.
virtual void print(std::ostream &file, int l) const
virtual double get_integral_CS(double energy1, double energy2) const =0
Retrieve integral cross-section [Mb * MeV] in a given interval [MeV].
virtual ~PhotoAbsCS()
Destructor.
virtual double get_CS(double energy) const =0
Retrieve cross-section [Mb] at a given energy [MeV].
virtual PhotoAbsCS * copy() const =0
virtual void scale(double fact)=0
Multiply by some factor. Can be useful for debugging and other purposes.
const std::string & get_name() const
Name of this shell or atom.
int get_number() const
Number of this shell.
virtual SimpleAtomPhotoAbsCS * copy() const
SimpleAtomPhotoAbsCS()
Default constructor.
virtual double get_ACS(double energy) const
virtual int get_main_shell_number(int nshell) const
virtual void print(std::ostream &file, int l) const
std::string file_name
Filename (saved for printing).
virtual double get_integral_ACS(double energy1, double energy2) const
Integrated photo-absorption cross-section overa given interval.
virtual double get_integral_ICS(double energy1, double energy2) const
Integrated photo-ionization cross-section over a given interval.
virtual double get_threshold(int nshell) const
Get the ionization threshold for a given shell.
virtual double get_ICS(double energy) const
virtual ~SimpleAtomPhotoAbsCS()
Destructor.
std::vector< ActivePtr< PhotoAbsCS > > acs
SimpleTablePhotoAbsCS()
Default constructor.
virtual double get_integral_CS(double energy1, double energy2) const
Retrieve integral cross-section [Mb * MeV] in a given interval [MeV].
void remove_leading_tiny(double level)
virtual double get_CS(double energy) const
Retrieve cross-section [Mb] at a given energy [MeV].
virtual void print(std::ostream &file, int l) const
virtual ~SimpleTablePhotoAbsCS()
Destructor.
virtual void scale(double fact)
Multiply by some factor. Can be useful for debugging and other purposes.
const std::vector< double > & get_arr_CS() const
const std::vector< double > & get_arr_ener() const
virtual SimpleTablePhotoAbsCS * copy() const
void remove_leading_zeros()
Remove points with zero cross-section from the table.
const double low_boundary_of_excitations
std::ostream & operator<<(std::ostream &file, const BGMesh &bgm)
const double standard_factor_Fano
const double Thomas_sum_rule_const_Mb
TRK sum rule [Mb * MeV].
const double Thomas_sum_rule_const
TRK sum rule [1/MeV], constant per one electron.