GENIEGenerator
|
Table-based implementation of Oset model. More...
#include <INukeOsetTable.h>
Classes | |
struct | PointHandler |
handle table's index and weights for given density and energy More... | |
Public Member Functions | |
INukeOsetTable (const char *filename) | |
constructor More... | |
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 | |
double | interpolate (const std::vector< double > &data) const |
interpolate cross section (method fixed for Oset tables) More... | |
int | processLine (const std::string &line) |
process single line from table file, push values to proper vector (method fixed for Oset tables) More... | |
int | checkIntegrity (const double &densityValue, const double &energyValue) |
check if data in file is consistent (method fixed for Oset tables) More... | |
void | badFile (const char *file, const int &errorCode, const int &line=0) const |
stop program and through an error if input file is corrupted (method fixed for Oset tables) More... | |
void | setCrossSections () |
calculalte cross sections for each channel More... | |
Private Attributes | |
std::vector< double > | fQelCrossSectionTable [fNChannels] |
quasi-elastic piN cross section More... | |
std::vector< double > | fCexCrossSectionTable [fNChannels] |
charge-exchange piN cross section More... | |
std::vector< double > | fAbsorptionCrossSectionTable |
pi absorption cross section More... | |
unsigned int | fNDensityBins |
number of denisty bins More... | |
unsigned int | fNEnergyBins |
number of energy bins More... | |
double | fDensityBinWidth |
density step (must be fixed) More... | |
double | fEnergyBinWidth |
energy step (must be fixed) More... | |
PointHandler | fDensityHandler |
nuclear density handler More... | |
PointHandler | fEnergyHandler |
pion kinetic energy handler 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... | |
Table-based implementation of Oset model.
This implementation is kept from historical reasons. Due to different approach to cascade in GENIE and NuWro there are some normalization issues. Default Oset model can be found in INukeOsetFormula
Definition at line 25 of file INukeOsetTable.h.
INukeOsetTable::INukeOsetTable | ( | const char * | filename | ) |
constructor
load tables from file and check its integrity
Definition at line 10 of file INukeOsetTable.cxx.
References badFile(), checkIntegrity(), fDensityBinWidth, fDensityHandler, fEnergyBinWidth, fEnergyHandler, fNDensityBins, fNEnergyBins, processLine(), and INukeOsetTable::PointHandler::setHandler().
|
private |
stop program and through an error if input file is corrupted (method fixed for Oset tables)
possible errors:
Definition at line 141 of file INukeOsetTable.cxx.
Referenced by INukeOsetTable().
|
private |
check if data in file is consistent (method fixed for Oset tables)
return 0 if all bins widths are constistent or return error code
Definition at line 80 of file INukeOsetTable.cxx.
References fDensityBinWidth, fEnergyBinWidth, fNDensityBins, fNEnergyBins, INukeOset::fNuclearDensity, INukeOset::fPionKineticEnergy, and osetUtils::isEqual().
Referenced by INukeOsetTable(), and processLine().
|
private |
interpolate cross section (method fixed for Oset tables)
make bilinear interpolation between four points around (density, energy)
Definition at line 159 of file INukeOsetTable.cxx.
References fDensityBinWidth, fDensityHandler, fEnergyBinWidth, fEnergyHandler, fNEnergyBins, INukeOsetTable::PointHandler::highWeight, INukeOsetTable::PointHandler::index, INukeOsetTable::PointHandler::isEdge, and INukeOsetTable::PointHandler::lowWeight.
Referenced by setCrossSections().
|
private |
process single line from table file, push values to proper vector (method fixed for Oset tables)
Definition at line 47 of file INukeOsetTable.cxx.
References checkIntegrity(), fAbsorptionCrossSectionTable, fCexCrossSectionTable, INukeOset::fNChannels, and fQelCrossSectionTable.
Referenced by INukeOsetTable().
|
privatevirtual |
calculalte cross sections for each channel
assign cross sections values to proper variables using bilinear interpolation
Implements INukeOset.
Definition at line 243 of file INukeOsetTable.cxx.
References INukeOset::fAbsorptionCrossSection, fAbsorptionCrossSectionTable, INukeOset::fCexCrossSections, fCexCrossSectionTable, INukeOset::fNChannels, INukeOset::fQelCrossSections, fQelCrossSectionTable, and interpolate().
Referenced by setupOset().
|
virtual |
use to set up Oset class (assign pion Tk, nuclear density etc)
Implements INukeOset.
Definition at line 229 of file INukeOsetTable.cxx.
References fDensityHandler, fEnergyHandler, INukeOset::fNuclearDensity, INukeOset::fPionKineticEnergy, setCrossSections(), INukeOset::setCrossSections(), and INukeOsetTable::PointHandler::update().
|
private |
pi absorption cross section
vector contains values in the following order: d0 e0, d0 e1, ... , d0 en, d1 e0 ...
Definition at line 55 of file INukeOsetTable.h.
Referenced by processLine(), and setCrossSections().
|
private |
charge-exchange piN cross section
vector contains values in the following order: d0 e0, d0 e1, ... , d0 en, d1 e0 ...
channel = 0 -> pi+n or pi-p, 1 -> pi+p or pi-n, 2 -> pi0
Definition at line 49 of file INukeOsetTable.h.
Referenced by processLine(), and setCrossSections().
|
private |
density step (must be fixed)
Definition at line 59 of file INukeOsetTable.h.
Referenced by checkIntegrity(), interpolate(), and INukeOsetTable().
|
private |
nuclear density handler
Definition at line 100 of file INukeOsetTable.h.
Referenced by interpolate(), INukeOsetTable(), and setupOset().
|
private |
energy step (must be fixed)
Definition at line 60 of file INukeOsetTable.h.
Referenced by checkIntegrity(), interpolate(), and INukeOsetTable().
|
private |
pion kinetic energy handler
Definition at line 101 of file INukeOsetTable.h.
Referenced by interpolate(), INukeOsetTable(), and setupOset().
|
private |
number of denisty bins
Definition at line 57 of file INukeOsetTable.h.
Referenced by checkIntegrity(), and INukeOsetTable().
|
private |
number of energy bins
Definition at line 58 of file INukeOsetTable.h.
Referenced by checkIntegrity(), interpolate(), and INukeOsetTable().
|
private |
quasi-elastic piN cross section
vector contains values in the following order: d0 e0, d0 e1, ... , d0 en, d1 e0 ...
channel = 0 -> pi+n or pi-p, 1 -> pi+p or pi-n, 2 -> pi0
Definition at line 42 of file INukeOsetTable.h.
Referenced by processLine(), and setCrossSections().