27 #ifndef GCOMINSTCHARS_HPP
28 #define GCOMINSTCHARS_HPP
65 void load(
const std::string& ictname);
66 double trans_D1(
const double& energy)
const;
67 double trans_V1(
const double& energy)
const;
71 double trans_D2(
const double& energy,
const double& phigeo)
const;
72 double trans_V23(
const double& energy,
const double& phigeo)
const;
73 double prob_D2inter(
const double& energy,
const double& phigeo)
const;
74 double multi_scatter(
const double& energy,
const double& phigeo)
const;
75 double psd_correction(
const double& energy,
const double& phigeo)
const;
84 std::vector<double>& coeffs);
86 std::vector<double>& y);
90 double min_coeff(
const std::vector<double>& coeffs)
const;
91 double max_coeff(
const std::vector<double>& coeffs)
const;
144 return (
"GCOMInstChars");
double m_delz
Distance between D1 and D2 levels (cm)
std::vector< double > m_d2pos_x
D2 x-position (cm)
void read_selfveto(const GFitsTable &table)
Read selfveto coefficients.
double prob_no_multihit(const double &energy) const
Return probability that no multihit occured.
std::vector< double > m_d2inter_coeffs
D2 interaction coefficients.
GNodeArray m_d2inter_energies
D2 interaction coefficient energies (MeV)
double trans_D2(const double &energy, const double &phigeo) const
Return transmission of material between D1 and D2.
double prob_D2inter(const double &energy, const double &phigeo) const
Return D2 interaction probability.
double trans_D1(const double &energy) const
Return transmission above D1.
double max_coeff(const std::vector< double > &coeffs) const
Return maximum coefficient.
double m_abdens
Density above D1 (g/cm^-3)
double prob_D1inter(const double &energy) const
Return D1 interaction probability.
std::vector< double > m_d2multi_coeffs
D2 multihit attenuation coefficients (probability)
GNodeArray m_alu_energies
Al interaction coefficient energies (MeV)
double m_vetodens
Density of veto domes (g/cm^-3)
GCaldb m_caldb
Calibration database.
std::string classname(void) const
Return class name.
void free_members(void)
Delete class members.
void read_pos(const GFitsTable &table, std::vector< double > &x, std::vector< double > &y)
Read module positions.
Interface for the COMPTEL Instrument Characteristics class.
GNodeArray m_aboved1_energies
Above D1 attenuation coefficient energies (MeV)
GNodeArray m_d1multi_energies
D1 multihit attenuation coefficient energies (MeV)
double m_aldens
Density of aluminium plate above D2 (g/cm^-3)
double m_d2dens
D2 density (g/cm^-3)
void copy_members(const GCOMInstChars &ict)
Copy class members.
double m_vthick
Thickness of V2 and V3 veto domes together (cm)
GNodeArray m_mfpath_energies
NE213A mean free path energies (MeV)
GCOMInstChars * clone(void) const
Clone instance.
double psd_correction(const double &energy, const double &phigeo) const
Return PSD correction.
std::vector< double > m_d1pos_y
D1 y-position (cm)
double ne213a_mfpath(const double &energy) const
Return NE213A mean free path.
Node array class interface definition.
Calibration database class.
std::vector< double > m_d2pos_y
D2 y-position (cm)
double m_abthick
Thickness above D1 (cm)
Interface class for all GammaLib classes.
double m_v1thick
Thickness of V1 veto dome (cm)
void load(const std::string &ictname)
Load COMPTEL instrument characteristics.
void read_coeffs(const GFitsTable &table, GNodeArray &energies, std::vector< double > &coeffs)
Read energy dependent coefficients.
std::vector< double > m_d1pos_x
D1 x-position (cm)
double m_d1dens
D1 density (g/cm^-3)
std::string print(const GChatter &chatter=NORMAL) const
Print COMPTEL instrument characteristics.
Abstract interface for FITS table.
void init_members(void)
Initialise class members.
GNodeArray m_selfveto_energies
Selfveto energies (MeV)
GNodeArray m_d2multi_energies
D2 multihit attenuation coefficient energies (MeV)
const GCaldb & caldb(void) const
Return calibration database.
double m_d2thick
D2 thickness (cm)
std::vector< double > m_d1multi_coeffs
D1 multihit attenuation coefficients (probability)
Calibration database class interface definition.
std::vector< double > m_aboved1_coeffs
Above D1 attenuation coefficients.
GNodeArray m_selfveto_zeniths
Selfveto zenith angle (deg)
double prob_no_selfveto(const double &energy, const double &zenith) const
Return probability that photon was not self vetoed.
GCOMInstChars(void)
Void constructor.
double m_d1thick
D1 thickness (cm)
void clear(void)
Clear instance.
double m_d1rad
D1 radius (cm)
double kn_cross_section(const double &k) const
Return integrated Klein-Nishina cross section.
std::vector< double > m_selfveto_coeffs
Selfveto coefficients (probability)
double m_althick
Thickness of aluminium plate above D2 (cm)
std::vector< double > m_mfpath_coeffs
NE213A mean free path values.
double trans_V1(const double &energy) const
Return V1 veto dome transmission.
double m_thbar
Average D2 incident angle (deg)
double m_d2rad
D2 radius (cm)
GNodeArray m_d1inter_energies
D1 interaction coefficient energies (MeV)
double trans_V23(const double &energy, const double &phigeo) const
Return V2+V3 veto dome transmission.
std::vector< double > m_alu_coeffs
Al interaction coefficients.
GCOMInstChars & operator=(const GCOMInstChars &ict)
Assignment operator.
std::vector< double > m_d1inter_coeffs
D1 interaction coefficients.
std::vector< double > m_veto_coeffs
Veto dome attenuation coefficients.
double min_coeff(const std::vector< double > &coeffs) const
Return minimum coefficient.
GNodeArray m_veto_energies
Veto dome attenuation coefficient energies (MeV)
double multi_scatter(const double &energy, const double &phigeo) const
Return multi-scatter correction.
~GCOMInstChars(void)
Destructor.