GENIEGenerator
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Pages
QELEventGeneratorSM.h
Go to the documentation of this file.
1 //____________________________________________________________________________
2 /*!
3 
4 \class genie::QELEventGeneratorSM
5 
6 \brief Generates values for the kinematic variables describing QEL neutrino
7  interaction events for Smith-Moniz model.
8  Is a concrete implementation of the EventRecordVisitorI interface.
9 
10 \ref [1] R.A.Smith and E.J.Moniz, Nuclear Physics B43, (1972) 605-622 \n
11  [2] K.S. Kuzmin, V.V. Lyubushkin, V.A.Naumov Eur. Phys. J. C54, (2008) 517-538
12 
13 \author Igor Kakorin <kakorin@jinr.ru> \n
14  Joint Institute for Nuclear Research \n
15 
16  adapted from fortran code provided by:
17 
18  Konstantin Kuzmin <kkuzmin@theor.jinr.ru>, \n
19  Joint Institute for Nuclear Research,
20  Institute for Theoretical and Experimental Physics \n
21 
22  Vadim Naumov <vnaumov@theor.jinr.ru>, \n
23  Joint Institute for Nuclear Research \n
24 
25  based on code of:
26  Costas Andreopoulos <c.andreopoulos \at cern.ch>
27  University of Liverpool
28 
29 \created May 05, 2017
30 
31 \cpright Copyright (c) 2003-2024, The GENIE Collaboration
32  For the full text of the license visit http://copyright.genie-mc.org
33 */
34 //____________________________________________________________________________
35 
36 #ifndef _QEL_EVENT_GENERATORSM_H_
37 #define _QEL_EVENT_GENERATORSM_H_
38 
39 #include <Math/IntegratorMultiDim.h>
40 
44 
45 namespace genie {
46 
48 
49 public :
51  QELEventGeneratorSM(string config);
53 
54  // implement the EventRecordVisitorI interface
55  void ProcessEventRecord(GHepRecord * event_rec) const;
56 
57  // overload the Algorithm::Configure() methods to load private data
58  // members from configuration options
59  void Configure(const Registry & config);
60  void Configure(string config);
61 
62 private:
63 
65 
66  void LoadConfig (void);
67  double ComputeMaxXSec(const Interaction * in) const;
68  double ComputeMaxXSec (const Interaction * in, const int nkey) const;
69  void AddTargetNucleusRemnant (GHepRecord * evrec) const; ///< add a recoiled nucleus remnant
70 
71 
72 
74 
75 
76  bool fGenerateNucleonInNucleus; ///< generate struck nucleon in nucleus
77  double fQ2Min; ///< Q2-threshold for seeking the second maximum
78 
79 
80 }; // class definition
81 
82 class XSecAlgorithmI;
83 class Interaction;
84 
85 namespace utils {
86 namespace gsl {
87 //.....................................................................................
88 //
89 // genie::utils::gsl::d3XSecSM_dQ2dvdkF_E
90 // A 3-D cross section function: d3XSecSM_dQ2dvdkF_E = f(Q2, v, kF=fixed)|(fixed E)
91 //
92 class d3XSecSM_dQ2dvdkF_E: public ROOT::Math::IBaseFunctionMultiDim
93 {
94 public:
95  d3XSecSM_dQ2dvdkF_E(const XSecAlgorithmI *, const Interaction *, double pF);
97 
98  // ROOT::Math::IBaseFunctionMultiDim interface
99  unsigned int NDim (void) const;
100  double DoEval (const double *) const;
101  ROOT::Math::IBaseFunctionMultiDim * Clone (void) const;
102 
103 private:
106  const double fpF;
107 };
108 //
109 // genie::utils::gsl::d1XSecSM_dQ2_E
110 // A 1-D cross section function: d1XSecSM_dQ2_E = f(Q2)|(fixed E)
111 //
112 class d1XSecSM_dQ2_E: public ROOT::Math::IBaseFunctionMultiDim
113 {
114 public:
115  d1XSecSM_dQ2_E(const XSecAlgorithmI *, const Interaction *);
116  ~d1XSecSM_dQ2_E();
117 
118  // ROOT::Math::IBaseFunctionMultiDim interface
119  unsigned int NDim (void) const;
120  double DoEval (const double *) const;
121  ROOT::Math::IBaseFunctionMultiDim * Clone (void) const;
122 
123 private:
126 };
127 //
128 // genie::utils::gsl::dv_dQ2_E=f(Q2)|(fixed E)
129 // A 1-D dependence of allowable \nu-range from Q2
130 //
131 class dv_dQ2_E: public ROOT::Math::IBaseFunctionMultiDim
132 {
133 public:
134  dv_dQ2_E(const Interaction *);
135  ~dv_dQ2_E();
136 
137  // ROOT::Math::IBaseFunctionMultiDim interface
138  unsigned int NDim (void) const;
139  double DoEval (const double *) const;
140  ROOT::Math::IBaseFunctionMultiDim * Clone (void) const;
141 
142 private:
145 };
146 } // gsl namespace
147 } // utils namespace
148 
149 
150 } // genie namespace
151 
152 #endif // _QEL_EVENT_GENERATORSM_H_
Cross Section Calculation Interface.
unsigned int NDim(void) const
double fQ2Min
Q2-threshold for seeking the second maximum.
double DoEval(const double *) const
double ComputeMaxXSec(const Interaction *in) const
enum genie::EKinePhaseSpace KinePhaseSpace_t
Abstract class. Provides a data caching mechanism for for concrete implementations of the EventRecord...
d1XSecSM_dQ2_E(const XSecAlgorithmI *, const Interaction *)
Summary information for an interaction.
Definition: Interaction.h:56
d3XSecSM_dQ2dvdkF_E(const XSecAlgorithmI *, const Interaction *, double pF)
ROOT::Math::IBaseFunctionMultiDim * Clone(void) const
double DoEval(const double *) const
ROOT::Math::IBaseFunctionMultiDim * Clone(void) const
ROOT::Math::IBaseFunctionMultiDim * Clone(void) const
void Configure(const Registry &config)
const Interaction * fInteraction
void ProcessEventRecord(GHepRecord *event_rec) const
bool fGenerateNucleonInNucleus
generate struck nucleon in nucleus
Contains auxiliary functions for Smith-Moniz model. .
void AddTargetNucleusRemnant(GHepRecord *evrec) const
add a recoiled nucleus remnant
A registry. Provides the container for algorithm configuration parameters.
Definition: Registry.h:65
GENIE&#39;s GHEP MC event record.
Definition: GHepRecord.h:45
Generates values for the kinematic variables describing QEL neutrino interaction events for Smith-Mon...