61 #ifndef VALENCIA_HADRON_TENSORI_H
62 #define VALENCIA_HADRON_TENSORI_H
92 inline virtual std::complex<double>
tx(
double ,
double )
const
93 {
return std::complex<double>(0., 0.); }
96 inline virtual std::complex<double>
ty(
double ,
double )
const
97 {
return std::complex<double>(0., 0.); }
100 inline virtual std::complex<double>
xt(
double q0,
double q_mag)
const
101 {
return std::conj( this->
tx(q0, q_mag) ); }
104 inline virtual std::complex<double>
xz(
double ,
double )
const
105 {
return std::complex<double>(0., 0.); }
108 inline virtual std::complex<double>
yt(
double q0,
double q_mag)
const
109 {
return std::conj( this->
ty(q0, q_mag) ); }
112 inline virtual std::complex<double>
yx(
double q0,
double q_mag)
const
113 {
return std::conj( this->
xy(q0, q_mag) ); }
116 inline virtual std::complex<double>
yy(
double q0,
double q_mag)
const
117 {
return this->
xx(q0, q_mag); }
120 inline virtual std::complex<double>
yz(
double ,
double )
const
121 {
return std::complex<double>(0., 0.); }
124 inline virtual std::complex<double>
zt(
double q0,
double q_mag)
const
125 {
return std::conj( this->
tz(q0, q_mag) ); }
128 inline virtual std::complex<double>
zx(
double q0,
double q_mag)
const
129 {
return std::conj( this->
xz(q0, q_mag) ); }
132 inline virtual std::complex<double>
zy(
double q0,
double q_mag)
const
133 {
return std::conj( this->
yz(q0, q_mag) ); }
145 virtual double W1(
double q0,
double q_mag,
double Mi)
const = 0;
152 virtual double W2(
double q0,
double q_mag,
double Mi)
const = 0;
156 virtual double W3(
double q0,
double q_mag,
double Mi)
const = 0;
160 virtual double W4(
double q0,
double q_mag,
double Mi)
const = 0;
166 virtual double W5(
double q0,
double q_mag,
double Mi)
const = 0;
170 virtual double W6(
double q0,
double q_mag,
double Mi)
const = 0;
174 double Q_value)
const ;
187 virtual double contraction(
int probe_pdg,
double E_probe,
double m_probe,
188 double Tl,
double cos_l,
double ml,
double Q_value)
const;
199 double Q_value)
const = 0;
213 double m_probe,
double Tl,
double cos_l,
double ml,
double Q_value)
219 double Q_value)
const = 0;
221 double m_probe,
double Tl,
double cos_l,
double ml,
double Q_value)
virtual double dSigma_dT_dCosTheta(const Interaction *interaction, double Q_value) const =0
LabFrameHadronTensorI(int Z, int A)
virtual std::complex< double > tx(double, double) const
The tensor element .
virtual double dSigma_dT_dCosTheta_rosenbluth(const Interaction *interaction, double Q_value) const =0
Abstract interface for an object that computes the elements ( , , etc.) and structure functions ( ...
virtual double W1(double q0, double q_mag, double Mi) const =0
The structure function .
virtual std::complex< double > yz(double, double) const
The tensor element .
virtual std::complex< double > ty(double, double) const
The tensor element .
virtual std::complex< double > yt(double q0, double q_mag) const
The tensor element .
virtual double W4(double q0, double q_mag, double Mi) const =0
virtual std::complex< double > zy(double q0, double q_mag) const
The tensor element .
Summary information for an interaction.
virtual double W2(double q0, double q_mag, double Mi) const =0
virtual std::complex< double > xy(double q0, double q_mag) const =0
The tensor element .
int A() const
Mass number of the target nucleus.
LabFrameHadronTensorI(int pdg=0)
Abstract interface for an object that computes the elements a hadron tensor . Also computes the contr...
virtual std::complex< double > tz(double q0, double q_mag) const =0
The tensor element .
virtual ~LabFrameHadronTensorI()
virtual std::complex< double > zx(double q0, double q_mag) const
The tensor element .
virtual std::complex< double > yx(double q0, double q_mag) const
The tensor element .
virtual std::complex< double > yy(double q0, double q_mag) const
The tensor element .
virtual double contraction(const Interaction *interaction, double Q_value) const
int pdg() const
PDG code of the target nucleus.
virtual std::complex< double > xt(double q0, double q_mag) const
The tensor element .
virtual std::complex< double > zt(double q0, double q_mag) const
The tensor element .
virtual double W3(double q0, double q_mag, double Mi) const =0
virtual double W5(double q0, double q_mag, double Mi) const =0
int Z() const
Atomic number of the target nucleus.
virtual double W6(double q0, double q_mag, double Mi) const =0
virtual std::complex< double > xz(double, double) const
The tensor element .
virtual std::complex< double > xx(double q0, double q_mag) const =0
The tensor element .