File indexing completed on 2025-04-19 09:10:13
0001 #ifndef REMNANTS_Tools_Remnants_Parameters_H
0002 #define REMNANTS_Tools_Remnants_Parameters_H
0003
0004 #include "ATOOLS/Phys/Flavour.H"
0005 #include <map>
0006 #include <string>
0007
0008 namespace REMNANTS {
0009 enum class primkT_form {
0010 none = 0,
0011 gauss = 1,
0012 gauss_limited = 2,
0013 dipole = 3,
0014 dipole_limited = 4,
0015 undefined = 99
0016 };
0017 enum class primkT_recoil {
0018 none = 0,
0019 democratic = 1,
0020 beam_vs_shower = 2,
0021 undefined = 99
0022 };
0023
0024 enum class matter_form {
0025 none = 0,
0026 single_gaussian = 1,
0027 double_gaussian = 2,
0028 unknown = 99
0029 };
0030
0031 std::ostream& operator<<(std::ostream& os, const primkT_form & form);
0032 std::ostream& operator<<(std::ostream& os, const primkT_recoil & recoil);
0033 std::ostream &operator<<(std::ostream& os, const matter_form & matter);
0034 std::istream& operator>>(std::istream& is, primkT_form& form);
0035 std::istream& operator>>(std::istream& is, primkT_recoil& recoil);
0036 std::istream &operator>>(std::istream& is, matter_form & matter);
0037
0038 struct remnant_parameters {
0039 public:
0040 primkT_form kT_form;
0041 primkT_recoil kT_recoil;
0042 matter_form m_form;
0043 std::map<std::string,double> params;
0044
0045 remnant_parameters() :
0046 kT_form(primkT_form::undefined), kT_recoil(primkT_recoil::undefined),
0047 m_form(matter_form::unknown) {}
0048 remnant_parameters(const remnant_parameters & parms);
0049 };
0050
0051 std::ostream& operator<<(std::ostream& os, const remnant_parameters & parms);
0052
0053 class Remnants_Parameters {
0054 std::map<ATOOLS::Flavour, remnant_parameters *> m_defaults, m_actuals;
0055
0056 void SetNucleonDefaults();
0057 void SetMesonDefaults();
0058 void SetPhotonDefaults();
0059 void SetLeptonDefaults();
0060 public:
0061 Remnants_Parameters();
0062 ~Remnants_Parameters();
0063 void Init();
0064 double Get(const ATOOLS::Flavour & flav, std::string keyword);
0065 primkT_form KT_Form(const ATOOLS::Flavour & flav);
0066 primkT_recoil KT_Recoil(const ATOOLS::Flavour & flav);
0067 matter_form Matter_Form(const ATOOLS::Flavour & flav);
0068 void Output();
0069 };
0070
0071 extern Remnants_Parameters * rempars;
0072 }
0073
0074 #endif