SmithMonizUtils.h
Go to the documentation of this file.
1 //____________________________________________________________________________
2 /*!
3 
4 \class genie::SmithMonizUtils
5 
6 \brief Contains auxiliary functions for Smith-Moniz model. \n
7 
8 \ref [1] R.A.Smith and E.J.Moniz, Nuclear Physics B43, (1972) 605-622 \n
9  [2] K.S. Kuzmin, V.V. Lyubushkin, V.A.Naumov Eur. Phys. J. C54, (2008) 517-538
10 
11 \author Igor Kakorin <kakorin@jinr.ru>
12  Joint Institute for Nuclear Research \n
13 
14  adapted from fortran code provided by: \n
15 
16  Konstantin Kuzmin <kkuzmin@theor.jinr.ru>
17  Joint Institute for Nuclear Research \n
18 
19  Vladimir Lyubushkin
20  Joint Institute for Nuclear Research \n
21 
22  Vadim Naumov <vnaumov@theor.jinr.ru>
23  Joint Institute for Nuclear Research \n
24 
25  based on code of: \n
26  Costas Andreopoulos <constantinos.andreopoulos@cern.ch>
27  University of Liverpool & STFC Rutherford Appleton Laboratory
28 
29 \created May 05, 2017
30 
31 \cpright Copyright (c) 2003-2020, The GENIE Collaboration
32  For the full text of the license visit http://copyright.genie-mc.org
33 
34 */
35 //____________________________________________________________________________
36 
37 #ifndef _SMITH_MONIZ_UTILS_H_
38 #define _SMITH_MONIZ_UTILS_H_
39 
40 #include <TLorentzVector.h>
41 
44 #include "Framework/Utils/Range1.h"
46 
47 namespace genie {
48 
49 
50 
51 class SmithMonizUtils : public Algorithm {
52 
53 public:
55  SmithMonizUtils(string config);
56  virtual ~SmithMonizUtils();
57  void SetInteraction(const Interaction * i);
58  double GetBindingEnergy(void) const;
59  double GetFermiMomentum(void) const;
60  double GetTheta_k(double v, double qv) const;
61  double GetTheta_p(double pv, double v, double qv, double &E_p) const;
62  double E_nu_thr_SM(void) const;
63  Range1D_t Q2QES_SM_lim(void) const;
64  Range1D_t vQES_SM_lim(double Q2) const;
65  Range1D_t kFQES_SM_lim(double nu, double Q2) const;
66  static double rho(double P_Fermi, double T_Fermi, double p);
67  double PhaseSpaceVolume(KinePhaseSpace_t ps) const;
68 
69  //! methods overloading the Algorithm() interface implementation
70  //! to build the fragmentation function from configuration data
71  void Configure(const Registry & config);
72  void Configure(string config);
73 
74 private:
75  template <class C>
76  class Func1D
77  {
78  public:
79  Func1D(const C &obj, double (C::*f)(double) const):obj_(obj), f_(f){}
80  ~Func1D(){}
81  double operator()(double d) {return (obj_.*f_)( d);}
82  private:
83  const C &obj_;
84  double (C::*f_)(double) const;
85  };
86 
87  void LoadConfig (void);
88  double QEL_EnuMin_SM(double E_nu) const;
89  double Q2lim1_SM(double Q2) const;
90  double Q2lim2_SM(double Q2) const;
91  double LambdaFUNCTION(double a, double b, double c) const;
92  void DMINFC(Func1D<SmithMonizUtils> &F, double A,double B, double EPS, double DELTA, double &X, double &Y, bool &LLM) const;
93  double vQES_SM_low_bound (double Q2) const;
94  double vQES_SM_upper_bound(double Q2) const;
95 
96  map<int, double> fNucRmvE;
97  string fKFTable;
99 
101 
102  // Some often used variables of class.
103  // To not calculate them again and again and for speed increase
104  // they are initialized at once for multiple use
105  double E_nu; ///< Neutrino energy (GeV)
106  double m_lep; ///< Mass of final charged lepton (GeV)
107  double mm_lep; ///< Squared mass of final charged lepton (GeV)
108  double m_ini; ///< Mass of initial hadron or hadron system (GeV)
109  double mm_ini; ///< Sqared mass of initial hadron or hadron system (GeV)
110  double m_fin; ///< Mass of final hadron or hadron system (GeV)
111  double mm_fin; ///< Squared mass of final hadron or hadron system (GeV)
112  double m_tar; ///< Mass of target nucleus (GeV)
113  double mm_tar; ///< Squared mass of target nucleus (GeV)
114  double m_rnu; ///< Mass of residual nucleus (GeV)
115  double mm_rnu; ///< Squared mass of residual nucleus (GeV)
116  double P_Fermi; ///< Maximum value of Fermi momentum of target nucleon (GeV)
117  double E_BIN; ///< Binding energy (GeV)
118 mutable double Enu_in; ///< Running neutrino energy (GeV)
119 
120 
121 };
122 
123 
124 } // genie namespace
125 #endif // _SMITH_MONIZ_UTILS_H_
void SetInteraction(const Interaction *i)
Range1D_t Q2QES_SM_lim(void) const
double mm_lep
Squared mass of final charged lepton (GeV)
double(C::* f_)(double) const
double m_ini
Mass of initial hadron or hadron system (GeV)
THE MAIN GENIE PROJECT NAMESPACE
Definition: AlgCmp.h:25
double Q2(const Interaction *const i)
Definition: KineUtils.cxx:1064
double E_BIN
Binding energy (GeV)
double E_nu_thr_SM(void) const
A simple [min,max] interval for doubles.
Definition: Range1.h:42
double m_lep
Mass of final charged lepton (GeV)
double mm_fin
Squared mass of final hadron or hadron system (GeV)
double vQES_SM_low_bound(double Q2) const
double E_nu
Neutrino energy (GeV)
map< int, double > fNucRmvE
Algorithm abstract base class.
Definition: Algorithm.h:53
double mm_ini
Sqared mass of initial hadron or hadron system (GeV)
double GetTheta_k(double v, double qv) const
enum genie::EKinePhaseSpace KinePhaseSpace_t
Range1D_t vQES_SM_lim(double Q2) const
double GetBindingEnergy(void) const
double Q2lim1_SM(double Q2) const
double mm_rnu
Squared mass of residual nucleus (GeV)
Summary information for an interaction.
Definition: Interaction.h:56
const Interaction * fInteraction
Range1D_t kFQES_SM_lim(double nu, double Q2) const
Func1D(const C &obj, double(C::*f)(double) const)
static Config * config
Definition: config.cpp:1054
double Q2lim2_SM(double Q2) const
const double a
double P_Fermi
Maximum value of Fermi momentum of target nucleon (GeV)
double m_rnu
Mass of residual nucleus (GeV)
p
Definition: test.py:223
double m_tar
Mass of target nucleus (GeV)
static constexpr double ps
Definition: Units.h:99
double vQES_SM_upper_bound(double Q2) const
double QEL_EnuMin_SM(double E_nu) const
double Enu_in
Running neutrino energy (GeV)
Contains auxiliary functions for Smith-Moniz model. .
static double rho(double P_Fermi, double T_Fermi, double p)
double PhaseSpaceVolume(KinePhaseSpace_t ps) const
A registry. Provides the container for algorithm configuration parameters.
Definition: Registry.h:65
static bool * b
Definition: config.cpp:1043
double GetTheta_p(double pv, double v, double qv, double &E_p) const
double mm_tar
Squared mass of target nucleus (GeV)
void Configure(const Registry &config)
double LambdaFUNCTION(double a, double b, double c) const
void DMINFC(Func1D< SmithMonizUtils > &F, double A, double B, double EPS, double DELTA, double &X, double &Y, bool &LLM) const
double m_fin
Mass of final hadron or hadron system (GeV)
double GetFermiMomentum(void) const