24 using namespace genie;
68 int tensorpdg = targetpdg;
74 if( Arequest == 4 && Zrequest == 2 ){
83 else if (Arequest < 9){
87 <<
"Asked to scale to deuterium through boron " 88 << targetpdg <<
" nope, lets not do that.";
91 else if( Arequest >= 9 && Arequest < 15){
98 else if( Arequest >= 15 && Arequest < 22){
101 else if( Arequest >= 22 && Arequest < 33){
103 tensorpdg = 1000140280;
105 else if(Arequest >= 33 && Arequest < 50){
109 else if( Arequest >= 50 && Arequest < 90){
111 tensorpdg = 1000280560;
113 else if( Arequest >= 90 && Arequest < 160){
115 tensorpdg = 1000561120;
117 else if( Arequest >= 160 ){
119 tensorpdg = 1001042080;
123 <<
"Asked to scale to a nucleus " 124 << targetpdg <<
" which we don't know yet.";
138 const vector <genie::BLI2DNonUnifGrid *> &
141 double Q0min = tensor_table[0]->XMin();
142 double Q0max = tensor_table[0]->XMax();
143 double Q3min = tensor_table[0]->YMin();
144 double Q3max = tensor_table[0]->YMax();
145 if(Q0 < Q0min || Q0 > Q0max || Q3 < Q3min || Q3 > Q3max) {
178 double PP = Zrequest;
179 double NN = Arequest - PP;
184 double scale_pp =
TMath::Sqrt( (PP * (PP - 1.)) / (P * (P - 1.)) );
185 double scale_nn =
TMath::Sqrt( (NN * (NN - 1.)) / (N * (N - 1.)) );
188 <<
"Scale pn pp nn for (" << targetpdg <<
", " << tensorpdg <<
")" 189 <<
" : " << scale_pn <<
" " << scale_pp <<
" " << scale_nn;
199 double temp_all = xsec_all;
200 double temp_pn = xsec_pn * scale_pn;
203 temp_all = xsec_pn * scale_pn + (xsec_all - xsec_pn) * scale_nn;
205 temp_all = xsec_pn * scale_pn + (xsec_all - xsec_pn) * scale_pp;
211 double xsec = (pn) ? xsec_pn : xsec_all;
218 <<
"Doesn't support transformation from " 240 if (!proc_info.
IsMEC()) {
265 this->
SubAlg(
"NumericalIntegrationAlg"));
Cross Section Calculation Interface.
THE MAIN GENIE PROJECT NAMESPACE
Cross Section Integrator Interface.
int HitNucPdg(void) const
bool KnownResonance(void) const
static MECHadronTensor * Instance()
int IonPdgCodeToA(int pdgc)
double XSec(const Interaction *i, KinePhaseSpace_t k) const
Compute the cross section for the input interaction.
enum genie::EKinePhaseSpace KinePhaseSpace_t
#define MAXLOG(s, l, c)
Similar to LOG(stream,priority) but quits after "maxcount" messages.
double fXSecScale
external xsec scaling factor
NievesSimoVacasMECPXSec2016()
#define P(a, b, c, d, e, x)
Summary information for an interaction.
const vector< genie::BLI2DNonUnifGrid * > & TensorTable(int targetpdg, MECHadronTensor::MECHadronTensorType_t type)
#define LOG(stream, priority)
A macro that returns the requested log4cpp::Category appending a string (using the FILE...
static string AsString(KinePhaseSpace_t kps)
A class encapsulating an enumeration of interaction types (EM, Weak-CC, Weak-NC) and scattering types...
const Kinematics & Kine(void) const
virtual void Configure(const Registry &config)
Singleton class to load and store MEC hadron tensor tables, to aid in the implementation (and improve...
bool Getq0q3FromTlCostl(double Tl, double costl, double Enu, double ml, double &q0, double &q3)
double GetKV(KineVar_t kv) const
virtual ~NievesSimoVacasMECPXSec2016()
TParticlePDG * FSPrimLepton(void) const
final state primary lepton
double Integral(const Interaction *i) const
bool KnownTensor(int targetpdg)
Var Sqrt(const Var &v)
Use to take sqrt of a var.
void Configure(const Registry &config)
A registry. Provides the container for algorithm configuration parameters.
const XclsTag & ExclTag(void) const
virtual double Integrate(const XSecAlgorithmI *model, const Interaction *interaction) const =0
bool ValidProcess(const Interaction *i) const
Can this cross section algorithm handle the input process?
assert(nhit_max >=nhit_nbins)
const InitialState & InitState(void) const
const ProcessInfo & ProcInfo(void) const
int IonPdgCodeToZ(int pdgc)
bool GetParam(const RgKey &name, T &p, bool is_top_call=true) const
const Target & Tgt(void) const
double TensorContraction(const Interaction *interaction, int tensor_pdg, MECHadronTensor::MECHadronTensorType_t tensor_type)
const XSecIntegratorI * fXSecIntegrator
double ProbeE(RefFrame_t rf) const
Most commonly used PDG codes. A set of utility functions to handle PDG codes is provided in PDGUtils...
const UInt_t kISkipProcessChk
if set, skip process validity checks
const Algorithm * SubAlg(const RgKey ®istry_key) const