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