Public Member Functions | Private Member Functions | Private Attributes | Static Private Attributes | List of all members
INukeOsetFormula Class Reference

Formula-based implementation of Oset model. More...

#include <INukeOsetFormula.h>

Inheritance diagram for INukeOsetFormula:
INukeOset

Public Member Functions

void setupOset (const double &density, const double &pionTk, const int &pionPDG, const double &protonFraction)
 use to set up Oset class (assign pion Tk, nuclear density etc) More...
 
- Public Member Functions inherited from INukeOset
 INukeOset ()
 contructor More...
 
double getTotalCrossSection () const
 return total = (qel+cex+abs) cross section More...
 
double getCexCrossSection () const
 return cex cross section More...
 
double getAbsorptionCrossSection () const
 return absorption cross section More...
 
double getCexFraction () const
 return fraction of cex events More...
 
double getAbsorptionFraction () const
 return fraction of absorption events More...
 

Private Member Functions

void setNucleus (const double &density)
 set nuclear density and Fermi momentum / energy More...
 
void setKinematics (const double &pionTk, const bool &isPi0)
 do kinematics More...
 
void setDelta ()
 set up Delta More...
 
void setSelfEnergy ()
 calculate delta self energy More...
 
double deltaReduction () const
 calculalte delta width reduction in nuclear medium More...
 
void setCrossSections ()
 calculalte cross sections for each channel More...
 

Private Attributes

double fPionMass
 pion mass in MeV More...
 
double fPionMass2
 pion mass squared More...
 
double fPionMomentum
 pion momentum in MeV More...
 
double fPionEnergy
 pion total energy in MeV More...
 
double fMomentumCMS
 momentum in CMS in MeV More...
 
double fMomentumCMS2
 momentum in CMS squared More...
 
double fInvariantMass
 inv mass = sqrt(s mandelstam) in MeV More...
 
double fReducedHalfWidth
 reduced delta half width in MeV More...
 
double fSelfEnergyTotal
 total delta self energy in MeV More...
 
double fSelfEnergyAbsorption
 abs part of delta self energy in MeV More...
 
double fDeltaPropagator2
 |delta propagator|^2 in MeV-2 More...
 
double fFermiMomentum
 Fermi momentum in MeV. More...
 
double fFermiEnergy
 Fermi energy in MeV. More...
 
double fCouplingFactor
 (coupling constant / pion mass)^2 More...
 

Static Private Attributes

static const double fCouplingConstant = 0.36 * 4.0 * kPi
 f*^2 More...
 
static const double fNucleonMass = kNucleonMass * 1000.0
 average nucleon mass [MeV] More...
 
static const double fNucleonMass2 = fNucleonMass * fNucleonMass
 average nucleon mass squared More...
 
static const double fDeltaMass = 1232.0
 delta mass in MeV More...
 
static const double fNormalDensity = 0.17
 normal nuclear density [fm-3] More...
 
static const double fNormFactor = 197.327 * 197.327 * 10.0
 MeV^-2 -> mb. More...
 
static const double fCoefSigma [fNChannels] = {-0.01334, 0.06889, 0.19753}
 s-wave parametrization eq. 3.7 More...
 
static const double fCoefB [fNChannels] = {-0.01866, 0.06602, 0.21972}
 s-wave parametrization eq. 3.8 More...
 
static const double fCoefD [fNChannels] = {-0.08229, 0.37062,-0.03130}
 s-wave parametrization eq. 3.8 More...
 
static const double ImB0 = 0.035
 s-wave parametrization eq. 3.12 More...
 
static const double fCoefCQ [fNChannels] = { -5.19, 15.35, 2.06}
 quasi-elastic term (eq. 2.21) More...
 
static const double fCoefCA2 [fNChannels] = { 1.06, -6.64, 22.66}
 two-body absorption (eq. 2.21) More...
 
static const double fCoefCA3 [fNChannels] = {-13.46, 46.17, -20.34}
 three-body absorption (eq. 2.21) More...
 
static const double fCoefAlpha [fNChannels] = {0.382, -1.322, 1.466}
 alpha (eq. 2.21) More...
 
static const double fCoefBeta [fNChannels] = {-0.038, 0.204, 0.613}
 beta (eq. 2.21) More...
 

Additional Inherited Members

- Protected Member Functions inherited from INukeOset
void setCrossSections (const int &pionPDG, const double &protonFraction)
 calculate avg cross sections according to proton / neutron fraction More...
 
- Protected Attributes inherited from INukeOset
double fNuclearDensity
 nuclear density in fm-3 More...
 
double fPionKineticEnergy
 pion kinetic energy in MeV More...
 
double fTotalCrossSection
 el+cex+abs cross section (averaged over proton / neutron fraction) More...
 
double fCexCrossSection
 cex cross section (averaged over proton / neutron fraction) More...
 
double fAbsorptionCrossSection
 absorption cross section (averaged over proton / neutron fraction) More...
 
double fQelCrossSections [fNChannels]
 total qel (el+cex) cross section for each channel More...
 
double fCexCrossSections [fNChannels]
 cex cross section for each channel More...
 
- Static Protected Attributes inherited from INukeOset
static const unsigned int fNChannels = 3
 number of possible channels: pi+n, pi+p, pi0 More...
 

Detailed Description

Formula-based implementation of Oset model.

Author
Tomasz Golan
Date
2015
Warning
Applicable for pion with Tk < 350 MeV
Remarks
Based on E. Oset et al., Nucl. Phys. A484 (1988) 557-592

Definition at line 17 of file INukeOsetFormula.h.

Member Function Documentation

double INukeOsetFormula::deltaReduction ( ) const
private

calculalte delta width reduction in nuclear medium

related to Pauli blocking, see sec. 2.3

Definition at line 177 of file INukeOsetFormula.cxx.

178 {
179  // assuming nucleon at rest
180  const double deltaEnergy = fPionEnergy + fNucleonMass;
181  // nucleon energy in CMS
182  const double energyCMS = sqrt(fMomentumCMS * fMomentumCMS + fNucleonMass2);
183  // fermiEnergy calculated from density
184  const double mu0 = (deltaEnergy * energyCMS - fFermiEnergy * fInvariantMass) /
186 
187  // see eq. 2.13
188  if (mu0 < -1.0) return 0.0;
189  if (mu0 > 1.0) return 1.0;
190 
191  return (mu0*mu0*mu0 + mu0 + 2) / 4.0;
192 }
double fInvariantMass
inv mass = sqrt(s mandelstam) in MeV
double fPionMomentum
pion momentum in MeV
double fFermiEnergy
Fermi energy in MeV.
static const double fNucleonMass2
average nucleon mass squared
double fPionEnergy
pion total energy in MeV
static const double fNucleonMass
average nucleon mass [MeV]
double fMomentumCMS
momentum in CMS in MeV
void INukeOsetFormula::setCrossSections ( )
privatevirtual

calculalte cross sections for each channel

  • calculalte p- and s-wave absorption cross section
  • calculalte total qel (el+cex) p- and s-wave cross section
  • calculalte fraction of cex in total qel (based on isospin relation)

Implements INukeOset.

Definition at line 108 of file INukeOsetFormula.cxx.

109 {
110 
111  // common part for all p-wave cross sections
112  const double pXsecCommon = fNormFactor * fCouplingFactor * fDeltaPropagator2 *
114 
115  // ----- ABSORPTION ----- //
116 
117  // constant factor for p-wave absorption cross section
118  static const double pAborptionFactor = 4.0 / 9.0;
119 
120  // absorption p-wave cross section (see eq. 2.24 and eq. 2.21)
121  const double pXsecAbsorption = pAborptionFactor * pXsecCommon *
123 
124  // constant factor for s-wave absorption cross section
125  static const double sAbsorptionFactor = 4.0 * kPi * 197.327 * 10.0 * ImB0;
126 
127  // absorption s-wave cross section (see sec. 3.3)
128  const double sXsecAbsorption = sAbsorptionFactor / fPionMomentum * fNuclearDensity *
129  (1.0 + fPionEnergy / 2.0 / fNucleonMass) / pow (fPionMass / 197.327, 4.0);
130 
131  // total absorption cross section coming from both s- and p-waves
132  fAbsorptionCrossSection = pXsecAbsorption + sXsecAbsorption;
133 
134  // ----- TOTAL ----- //
135 
136  // el+cex p-wave cross section (will be multipled by proper factor later)
137  const double pXsecTotalQel = pXsecCommon * fReducedHalfWidth;
138 
139  // see eq. 3.7
140  const double ksi = (fInvariantMass - fNucleonMass - fPionMass) / fPionMass;
141 
142  // el+cex s-wave cross section
143  const double sXsecTotalQel = quadraticFunction (ksi, fCoefSigma) /
145 
146  // see eq. 3.8
147  const double B = quadraticFunction (ksi, fCoefB);
148  const double D = quadraticFunction (ksi, fCoefD);
149  const double A = 0.5 + 0.5*D;
150  const double C = 1.0 - A;
151 
152  // see 3.4 (chi = 1 for neutron, chi = -1 for proton, chi = 0 for N=Z)
153  const double sTotalQelFactor[fNChannels] = {C - B, A + B, 1.0};
154 
155  // see eq. 2.18 (chi = 1 for neutron, chi = -1 for proton, chi = 0 for N=Z)
156  static const double pTotalQelFactor[fNChannels] = {2.0 / 9.0, 2.0 / 3.0,
157  5.0 / 9.0};
158 
159  // total cross section for each channel = qel_s + qel_p + absorption
160  for (unsigned int i = 0; i < fNChannels; i++)
161  fQelCrossSections[i] = pTotalQelFactor[i] * pXsecTotalQel + sTotalQelFactor[i] * sXsecTotalQel;
162 
163  // ----- CEX ----- //
164 
165  // see 2.18 (chi = 1 for neutron, chi = -1 for proton, chi = 0 for N=Z)
166  static const double pCexFactor[fNChannels] = {4.0 / 27.0, 0.0, 5.0 / 27.0};
167 
168  // see eq. 3.4 (chi = 1 for neutron, chi = -1 for proton, chi = 0 for N=Z)
169  const double sCexFactor[fNChannels] = {2.0 * C, 0.0, 2.0 * C};
170 
171  // total cex cross section coming from both s- and p-waves
172  for (unsigned int i = 0; i < fNChannels; i++)
173  fCexCrossSections[i] = pCexFactor[i] * pXsecTotalQel + sCexFactor[i] * sXsecTotalQel;
174 }
static const double fCoefSigma[fNChannels]
s-wave parametrization eq. 3.7
double fDeltaPropagator2
|delta propagator|^2 in MeV-2
double fInvariantMass
inv mass = sqrt(s mandelstam) in MeV
constexpr T pow(T x)
Definition: pow.h:72
static const double fCoefD[fNChannels]
s-wave parametrization eq. 3.8
double quadraticFunction(const double &x, const double *a)
Definition: INukeOset.h:112
#define D
Debug message.
Definition: tclscanner.cpp:775
double fPionMomentum
pion momentum in MeV
double fCexCrossSections[fNChannels]
cex cross section for each channel
Definition: INukeOset.h:85
static const double ImB0
s-wave parametrization eq. 3.12
static const double fNormFactor
MeV^-2 -> mb.
double fMomentumCMS2
momentum in CMS squared
double fCouplingFactor
(coupling constant / pion mass)^2
double fAbsorptionCrossSection
absorption cross section (averaged over proton / neutron fraction)
Definition: INukeOset.h:74
double fQelCrossSections[fNChannels]
total qel (el+cex) cross section for each channel
Definition: INukeOset.h:84
static const unsigned int fNChannels
number of possible channels: pi+n, pi+p, pi0
Definition: INukeOset.h:81
double fSelfEnergyAbsorption
abs part of delta self energy in MeV
double fPionEnergy
pion total energy in MeV
static const double fNucleonMass
average nucleon mass [MeV]
static const double fCoefB[fNChannels]
s-wave parametrization eq. 3.8
double fPionMass2
pion mass squared
#define A
Definition: memgrp.cpp:38
double fNuclearDensity
nuclear density in fm-3
Definition: INukeOset.h:66
double fReducedHalfWidth
reduced delta half width in MeV
static const double kPi
Definition: Constants.h:37
double fPionMass
pion mass in MeV
void INukeOsetFormula::setDelta ( )
private

set up Delta

  • calculale Delta half width (in nuclear matter)
  • calculalte Delta self energy
  • calculalte Delta propagator

Definition at line 83 of file INukeOsetFormula.cxx.

84 {
85  static const double constFactor = 1.0 / 12.0 / kPi;
86 
87  fCouplingFactor = fCouplingConstant / fPionMass2; // (f*/m_pi)^2, e.g. eq. 2.6
88 
89  // see eq. 2.7 and sec. 2.3
92 
93  setSelfEnergy (); // calculate qel and absorption part of delta self-energy
94 
95  // real and imaginary part of delta denominator (see eq. 2.23)
96  const double ReDelta = fInvariantMass - fDeltaMass;
97  const double ImDelta = fReducedHalfWidth + fSelfEnergyTotal;
98 
99  fDeltaPropagator2 = 1.0 / (ReDelta * ReDelta + ImDelta * ImDelta);
100 }
double deltaReduction() const
calculalte delta width reduction in nuclear medium
double fDeltaPropagator2
|delta propagator|^2 in MeV-2
double fSelfEnergyTotal
total delta self energy in MeV
double fInvariantMass
inv mass = sqrt(s mandelstam) in MeV
double fMomentumCMS2
momentum in CMS squared
double fCouplingFactor
(coupling constant / pion mass)^2
void setSelfEnergy()
calculate delta self energy
static const double fDeltaMass
delta mass in MeV
static const double fNucleonMass
average nucleon mass [MeV]
double fPionMass2
pion mass squared
static const double fCouplingConstant
f*^2
double fMomentumCMS
momentum in CMS in MeV
double fReducedHalfWidth
reduced delta half width in MeV
static const double kPi
Definition: Constants.h:37
void INukeOsetFormula::setKinematics ( const double &  pionTk,
const bool isPi0 
)
private

do kinematics

  • set pointer to proper mass (charged vs neutral)
  • calculate energy, momentum (in LAB and CMS) and invariant mass

Definition at line 52 of file INukeOsetFormula.cxx.

53 {
54  if (isPi0)
55  {
56  fPionMass = PDGLibrary::Instance()->Find(kPdgPi0)->Mass() * 1000.0; // [MeV]
58  }
59  else
60  {
61  fPionMass = PDGLibrary::Instance()->Find(kPdgPiP)->Mass() * 1000.0; // [MeV]
63  }
64 
65  fPionKineticEnergy = pionTk;
68 
69  // assuming nucleon at rest
72 
75 }
double fInvariantMass
inv mass = sqrt(s mandelstam) in MeV
double fPionKineticEnergy
pion kinetic energy in MeV
Definition: INukeOset.h:67
double fPionMomentum
pion momentum in MeV
double fMomentumCMS2
momentum in CMS squared
static const double fNucleonMass2
average nucleon mass squared
const int kPdgPiP
Definition: PDGCodes.h:158
const int kPdgPi0
Definition: PDGCodes.h:160
double fPionEnergy
pion total energy in MeV
static const double fNucleonMass
average nucleon mass [MeV]
double fPionMass2
pion mass squared
double fMomentumCMS
momentum in CMS in MeV
double fPionMass
pion mass in MeV
void INukeOsetFormula::setNucleus ( const double &  density)
private

set nuclear density and Fermi momentum / energy

$ p_{F} = \left(\frac{3}{2}\pi\rho\right)^{1/3} $

Definition at line 38 of file INukeOsetFormula.cxx.

39 {
40  static const double constFactor = 3.0 / 2.0 * kPi * kPi;
41 
42  fNuclearDensity = density;
43  fFermiMomentum = pow (constFactor * fNuclearDensity, 1.0 / 3.0) * 197.327;
45 }
constexpr T pow(T x)
Definition: pow.h:72
double fFermiEnergy
Fermi energy in MeV.
double fFermiMomentum
Fermi momentum in MeV.
static const double fNucleonMass2
average nucleon mass squared
double fNuclearDensity
nuclear density in fm-3
Definition: INukeOset.h:66
static const double kPi
Definition: Constants.h:37
void INukeOsetFormula::setSelfEnergy ( )
private

calculate delta self energy

based on eq. 2.21

Definition at line 195 of file INukeOsetFormula.cxx.

196 {
197  const double x = fPionKineticEnergy / fPionMass;
198  const double densityFraction = fNuclearDensity / fNormalDensity;
199 
200  const double alpha = quadraticFunction (x, fCoefAlpha);
201  const double beta = quadraticFunction (x, fCoefBeta);
202 
203  double absNN = quadraticFunction (x, fCoefCA2);
204  double absNNN = quadraticFunction (x, fCoefCA3);
205 
206  absNN *= pow (densityFraction, beta);
207 
208  if (absNNN < 0.0) absNNN = 0.0; // it may happen for Tk < 50 MeV
209  else absNNN *= pow (densityFraction, 2.0 * beta);
210 
211  // absNN and absNNN are multiplied by number of nucleons to get proper
212  // cross section normalization
213  //fSelfEnergyAbsorption = 2.0 * absNN + 3.0 * absNNN;
214  fSelfEnergyAbsorption = absNN + absNNN;
215 
216  // this one goes to the delta propagator
217  fSelfEnergyTotal = absNN + absNNN + quadraticFunction (x, fCoefCQ) * pow (densityFraction, alpha);
218 }
double fSelfEnergyTotal
total delta self energy in MeV
double beta(double KE, const simb::MCParticle *part)
static const double fCoefAlpha[fNChannels]
alpha (eq. 2.21)
constexpr T pow(T x)
Definition: pow.h:72
double fPionKineticEnergy
pion kinetic energy in MeV
Definition: INukeOset.h:67
double quadraticFunction(const double &x, const double *a)
Definition: INukeOset.h:112
static const double fCoefCA2[fNChannels]
two-body absorption (eq. 2.21)
static const double fCoefCQ[fNChannels]
quasi-elastic term (eq. 2.21)
static const double fNormalDensity
normal nuclear density [fm-3]
double alpha
Definition: doAna.cpp:15
static const double fCoefCA3[fNChannels]
three-body absorption (eq. 2.21)
double fSelfEnergyAbsorption
abs part of delta self energy in MeV
list x
Definition: train.py:276
double fNuclearDensity
nuclear density in fm-3
Definition: INukeOset.h:66
double fPionMass
pion mass in MeV
static const double fCoefBeta[fNChannels]
beta (eq. 2.21)
void INukeOsetFormula::setupOset ( const double &  density,
const double &  pionTk,
const int &  pionPDG,
const double &  protonFraction 
)
virtual

use to set up Oset class (assign pion Tk, nuclear density etc)

  • set up nucleus
  • set up kinematics
  • set up Delta (width, propagator)
  • calculate cross sections

Implements INukeOset.

Definition at line 227 of file INukeOsetFormula.cxx.

229 {
230  setNucleus (density);
231  setKinematics (pionTk, pionPDG == kPdgPi0);
232  setDelta();
233  setCrossSections ();
234  INukeOset::setCrossSections (pionPDG, protonFraction);
235 }
void setCrossSections()
calculalte cross sections for each channel
void setKinematics(const double &pionTk, const bool &isPi0)
do kinematics
void setDelta()
set up Delta
void setNucleus(const double &density)
set nuclear density and Fermi momentum / energy
const int kPdgPi0
Definition: PDGCodes.h:160
virtual void setCrossSections()=0
calculalte cross sections for each channel

Member Data Documentation

const double INukeOsetFormula::fCoefAlpha = {0.382, -1.322, 1.466}
staticprivate

alpha (eq. 2.21)

delta parametrization coefficients (NuclPhys A468 (1987) 631-652)

Definition at line 43 of file INukeOsetFormula.h.

const double INukeOsetFormula::fCoefB = {-0.01866, 0.06602, 0.21972}
staticprivate

s-wave parametrization eq. 3.8

Definition at line 36 of file INukeOsetFormula.h.

const double INukeOsetFormula::fCoefBeta = {-0.038, 0.204, 0.613}
staticprivate

beta (eq. 2.21)

delta parametrization coefficients (NuclPhys A468 (1987) 631-652)

Definition at line 44 of file INukeOsetFormula.h.

const double INukeOsetFormula::fCoefCA2 = { 1.06, -6.64, 22.66}
staticprivate

two-body absorption (eq. 2.21)

delta parametrization coefficients (NuclPhys A468 (1987) 631-652)

Definition at line 41 of file INukeOsetFormula.h.

const double INukeOsetFormula::fCoefCA3 = {-13.46, 46.17, -20.34}
staticprivate

three-body absorption (eq. 2.21)

delta parametrization coefficients (NuclPhys A468 (1987) 631-652)

Definition at line 42 of file INukeOsetFormula.h.

const double INukeOsetFormula::fCoefCQ = { -5.19, 15.35, 2.06}
staticprivate

quasi-elastic term (eq. 2.21)

delta parametrization coefficients (NuclPhys A468 (1987) 631-652)

Definition at line 40 of file INukeOsetFormula.h.

const double INukeOsetFormula::fCoefD = {-0.08229, 0.37062,-0.03130}
staticprivate

s-wave parametrization eq. 3.8

Definition at line 37 of file INukeOsetFormula.h.

const double INukeOsetFormula::fCoefSigma = {-0.01334, 0.06889, 0.19753}
staticprivate

s-wave parametrization eq. 3.7

Definition at line 35 of file INukeOsetFormula.h.

const double INukeOsetFormula::fCouplingConstant = 0.36 * 4.0 * kPi
staticprivate

f*^2

Definition at line 28 of file INukeOsetFormula.h.

double INukeOsetFormula::fCouplingFactor
private

(coupling constant / pion mass)^2

Definition at line 66 of file INukeOsetFormula.h.

const double INukeOsetFormula::fDeltaMass = 1232.0
staticprivate

delta mass in MeV

Definition at line 31 of file INukeOsetFormula.h.

double INukeOsetFormula::fDeltaPropagator2
private

|delta propagator|^2 in MeV-2

Definition at line 59 of file INukeOsetFormula.h.

double INukeOsetFormula::fFermiEnergy
private

Fermi energy in MeV.

Definition at line 63 of file INukeOsetFormula.h.

double INukeOsetFormula::fFermiMomentum
private

Fermi momentum in MeV.

Definition at line 62 of file INukeOsetFormula.h.

double INukeOsetFormula::fInvariantMass
private

inv mass = sqrt(s mandelstam) in MeV

Definition at line 53 of file INukeOsetFormula.h.

double INukeOsetFormula::fMomentumCMS
private

momentum in CMS in MeV

Definition at line 51 of file INukeOsetFormula.h.

double INukeOsetFormula::fMomentumCMS2
private

momentum in CMS squared

Definition at line 52 of file INukeOsetFormula.h.

const double INukeOsetFormula::fNormalDensity = 0.17
staticprivate

normal nuclear density [fm-3]

Definition at line 32 of file INukeOsetFormula.h.

const double INukeOsetFormula::fNormFactor = 197.327 * 197.327 * 10.0
staticprivate

MeV^-2 -> mb.

Definition at line 33 of file INukeOsetFormula.h.

const double INukeOsetFormula::fNucleonMass = kNucleonMass * 1000.0
staticprivate

average nucleon mass [MeV]

Definition at line 29 of file INukeOsetFormula.h.

const double INukeOsetFormula::fNucleonMass2 = fNucleonMass * fNucleonMass
staticprivate

average nucleon mass squared

Definition at line 30 of file INukeOsetFormula.h.

double INukeOsetFormula::fPionEnergy
private

pion total energy in MeV

Definition at line 50 of file INukeOsetFormula.h.

double INukeOsetFormula::fPionMass
private

pion mass in MeV

Definition at line 47 of file INukeOsetFormula.h.

double INukeOsetFormula::fPionMass2
private

pion mass squared

Definition at line 48 of file INukeOsetFormula.h.

double INukeOsetFormula::fPionMomentum
private

pion momentum in MeV

Definition at line 49 of file INukeOsetFormula.h.

double INukeOsetFormula::fReducedHalfWidth
private

reduced delta half width in MeV

Definition at line 56 of file INukeOsetFormula.h.

double INukeOsetFormula::fSelfEnergyAbsorption
private

abs part of delta self energy in MeV

Definition at line 58 of file INukeOsetFormula.h.

double INukeOsetFormula::fSelfEnergyTotal
private

total delta self energy in MeV

Definition at line 57 of file INukeOsetFormula.h.

const double INukeOsetFormula::ImB0 = 0.035
staticprivate

s-wave parametrization eq. 3.12

Definition at line 38 of file INukeOsetFormula.h.


The documentation for this class was generated from the following files: