GENIEGenerator
Loading...
Searching...
No Matches
BBA03ELFormFactorsModel.cxx
Go to the documentation of this file.
1//____________________________________________________________________________
2/*
3 Copyright (c) 2003-2025, The GENIE Collaboration
4 For the full text of the license visit http://copyright.genie-mc.org
5
6 Costas Andreopoulos <c.andreopoulos \at cern.ch>
7 University of Liverpool
8*/
9//____________________________________________________________________________
10
11#include <TMath.h>
12
17
18using namespace genie;
19
20//____________________________________________________________________________
22ELFormFactorsModelI("genie::BBA03ELFormFactorsModel")
23{
24
25}
26//____________________________________________________________________________
28ELFormFactorsModelI("genie::BBA03ELFormFactorsModel", config)
29{
30
31}
32//____________________________________________________________________________
37//____________________________________________________________________________
38double BBA03ELFormFactorsModel::Gep(const Interaction * interaction) const
39{
40 double gep = 0;
41 double q2 = interaction->Kine().q2();
42
43 if( TMath::Abs(q2) > fQ2Max ) {
44 double gepmx = this->BBA03Fit(-fQ2Max, 1., fGep);
45 double gmpmx = this->BBA03Fit(-fQ2Max, fMuP, fGmp);
46 double gmp = this->BBA03Fit(q2, fMuP, fGmp);
47 gep = gmp * (gepmx/gmpmx);
48 } else {
49 gep = this->BBA03Fit(q2, 1., fGep);
50 }
51 return gep;
52}
53//____________________________________________________________________________
54double BBA03ELFormFactorsModel::Gmp(const Interaction * interaction) const
55{
56 double q2 = interaction->Kine().q2();
57 double gmp = this->BBA03Fit(q2, fMuP, fGmp);
58 return gmp;
59}
60//____________________________________________________________________________
61double BBA03ELFormFactorsModel::Gen(const Interaction * interaction) const
62{
63 double q2 = interaction->Kine().q2();
64
65 const Target & tgt = interaction->InitState().Tgt();
66
67 double M = tgt.HitNucMass(); // Mnucl
68 double M2 = TMath::Power(M,2); // Mnucl^2
69 double t = -q2/(4*M2); // q2<0
70 double a = fGenA; // Krutov et al. parameter a
71 double b = fGenB; // Krutov et al. parameter b
72 double mv2 = fMv2; // elastic vector mass^2
73 double GD = 1./TMath::Power(1-q2/mv2,2.); // dipole form factor
74
75 double gen = -1. * fMuN * a * t * GD / (1 + b*t);
76 return gen;
77}
78//____________________________________________________________________________
79double BBA03ELFormFactorsModel::Gmn(const Interaction * interaction) const
80{
81 double q2 = interaction->Kine().q2();
82 double gmn = this->BBA03Fit(q2, fMuN, fGmn);
83 return gmn;
84}
85//____________________________________________________________________________
87{
89 this->LoadConfig();
90}
91//____________________________________________________________________________
93{
94 Algorithm::Configure(param_set);
95 this->LoadConfig();
96}
97//____________________________________________________________________________
99{
100 //-- load BBA03 model parameters
101
102 // BBA2003 fit coefficients
103 GetParam( "BBA03-Gep-a2", fGep.a2 ) ;
104 GetParam( "BBA03-Gep-a4", fGep.a4 ) ;
105 GetParam( "BBA03-Gep-a6", fGep.a6 ) ;
106 GetParam( "BBA03-Gep-a8", fGep.a8 ) ;
107 GetParam( "BBA03-Gep-a10", fGep.a10 ) ;
108 GetParam( "BBA03-Gep-a12", fGep.a12 ) ;
109
110 GetParam( "BBA03-Gmp-a2", fGmp.a2 ) ;
111 GetParam( "BBA03-Gmp-a4", fGmp.a4 ) ;
112 GetParam( "BBA03-Gmp-a6", fGmp.a6 ) ;
113 GetParam( "BBA03-Gmp-a8", fGmp.a8 ) ;
114 GetParam( "BBA03-Gmp-a10", fGmp.a10 ) ;
115 GetParam( "BBA03-Gmp-a12", fGmp.a12 ) ;
116
117 GetParam( "BBA03-Gmn-a2", fGmn.a2 ) ;
118 GetParam( "BBA03-Gmn-a4", fGmn.a4 ) ;
119 GetParam( "BBA03-Gmn-a6", fGmn.a6 ) ;
120 GetParam( "BBA03-Gmn-a8", fGmn.a8 ) ;
121 GetParam( "BBA03-Gmn-a10", fGmn.a10 ) ;
122 GetParam( "BBA03-Gmn-a12", fGmn.a12 ) ;
123
124 // Krutov parameters
125 GetParam( "BBA03-Gen-a", fGenA ) ;
126 GetParam( "BBA03-Gen-b", fGenB ) ;
127
128 // Q2max
129 GetParam( "BBA03-Q2Max", fQ2Max ) ;
130
131 // vector mass
132 GetParam( "EL-Mv",fMv ) ;
133 fMv2 = TMath::Power(fMv,2);
134
135 // anomalous magnetic moments
136 GetParam( "AnomMagnMoment-P", fMuP ) ;
137 GetParam( "AnomMagnMoment-N", fMuN ) ;
138}
139//____________________________________________________________________________
141 double q2, double g0, const BBA2003Fit_t & fit) const
142{
143// The BBA2003 inverse polynomizal fit function for Gep,Gmp,Gmn
144// Inputs:
145// q2 : momentum transfer, <0
146// g0 : G(q2=0) -> Gep=1, Gmp=mup, Gmn=mun (mu:magnetic moment)
147// fit : BBA2003 fit parameters for either Gep,Gmp,Gmn
148
149 double Q2 = -q2;
150 double Q4 = Q2 * Q2;
151 double Q6 = Q4 * Q2;
152 double Q8 = Q6 * Q2;
153 double Q10 = Q8 * Q2;
154 double Q12 = Q10 * Q2;
155
156 double g = g0 / (1. + fit.a2*Q2 + fit.a4*Q4 + fit.a6*Q6 +
157 fit.a8*Q8 + fit.a10*Q10 + fit.a12*Q12);
158 return g;
159}
160//____________________________________________________________________________
std::mt19937 gen(rd())
bool GetParam(const RgKey &name, T &p, bool is_top_call=true) const
virtual void Configure(const Registry &config)
Definition Algorithm.cxx:62
double Gmn(const Interaction *interaction) const
Compute the elastic form factor G_{mn} for the input interaction.
BBA2003Fit_t fGmp
BBA2003 fit coefficients for Gmp.
double fMuN
Anomalous neutron magnetic moment.
double Gmp(const Interaction *interaction) const
Compute the elastic form factor G_{mp} for the input interaction.
void Configure(const Registry &config)
double BBA03Fit(double q2, double g0, const BBA2003Fit_t &fp) const
double fMuP
Anomalous proton magnetic moment.
BBA2003Fit_t fGmn
BBA2003 fit coefficients for Gmn.
BBA2003Fit_t fGep
BBA2003 fit coefficients for Gep.
double Gen(const Interaction *interaction) const
Compute the elastic form factor G_{en} for the input interaction.
double Gep(const Interaction *interaction) const
Compute the elastic form factor G_{ep} for the input interaction.
double fQ2Max
Gep/Gmp assummed const for Q2 > Q2Max.
double fGenB
Krutov parameterization for Gen.
double fGenA
Krutov parameterization for Gen.
const Target & Tgt(void) const
Summary information for an interaction.
Definition Interaction.h:56
const Kinematics & Kine(void) const
Definition Interaction.h:71
const InitialState & InitState(void) const
Definition Interaction.h:69
double q2(bool selected=false) const
A registry. Provides the container for algorithm configuration parameters.
Definition Registry.h:65
A Neutrino Interaction Target. Is a transparent encapsulation of quite different physical systems suc...
Definition Target.h:40
double HitNucMass(void) const
Definition Target.cxx:233
const double a
THE MAIN GENIE PROJECT NAMESPACE
Definition AlgCmp.h:25
struct genie::SBBA2003Fit BBA2003Fit_t