GENIEGenerator
Loading...
Searching...
No Matches
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-2025, 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
45namespace genie {
46
48
49public :
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
62private:
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
82class XSecAlgorithmI;
83class Interaction;
84
85namespace utils {
86namespace 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//
92class d3XSecSM_dQ2dvdkF_E: public ROOT::Math::IBaseFunctionMultiDim
93{
94public:
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
103private:
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//
112class d1XSecSM_dQ2_E: public ROOT::Math::IBaseFunctionMultiDim
113{
114public:
115 d1XSecSM_dQ2_E(const XSecAlgorithmI *, const Interaction *);
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
123private:
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//
131class dv_dQ2_E: public ROOT::Math::IBaseFunctionMultiDim
132{
133public:
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
142private:
145};
146} // gsl namespace
147} // utils namespace
148
149
150} // genie namespace
151
152#endif // _QEL_EVENT_GENERATORSM_H_
GENIE's GHEP MC event record.
Definition GHepRecord.h:45
Summary information for an interaction.
Definition Interaction.h:56
void Configure(const Registry &config)
double fQ2Min
Q2-threshold for seeking the second maximum.
void ProcessEventRecord(GHepRecord *event_rec) const
void AddTargetNucleusRemnant(GHepRecord *evrec) const
add a recoiled nucleus remnant
double ComputeMaxXSec(const Interaction *in) const
bool fGenerateNucleonInNucleus
generate struck nucleon in nucleus
A registry. Provides the container for algorithm configuration parameters.
Definition Registry.h:65
Contains auxiliary functions for Smith-Moniz model. .
Cross Section Calculation Interface.
ROOT::Math::IBaseFunctionMultiDim * Clone(void) const
d1XSecSM_dQ2_E(const XSecAlgorithmI *, const Interaction *)
double DoEval(const double *) const
ROOT::Math::IBaseFunctionMultiDim * Clone(void) const
d3XSecSM_dQ2dvdkF_E(const XSecAlgorithmI *, const Interaction *, double pF)
unsigned int NDim(void) const
ROOT::Math::IBaseFunctionMultiDim * Clone(void) const
double DoEval(const double *) const
Root of GENIE utility namespaces.
THE MAIN GENIE PROJECT NAMESPACE
Definition AlgCmp.h:25
enum genie::EKinePhaseSpace KinePhaseSpace_t