Back to home page

EIC code displayed by LXR

 
 

    


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