Public Member Functions | Private Attributes | List of all members
genie::utils::gsl::d3Xsec_dOmegaldThetapi Class Reference

#include "/cvmfs/nova.opensciencegrid.org/externals/genie/v3_00_06_p01/Linux64bit+2.6-2.12-e17-debug/GENIE-Generator/src/Physics/XSectionIntegration/GSLXSecFunc.h"

Inheritance diagram for genie::utils::gsl::d3Xsec_dOmegaldThetapi:

Public Member Functions

 d3Xsec_dOmegaldThetapi (const XSecAlgorithmI *m, const Interaction *i)
 
 ~d3Xsec_dOmegaldThetapi ()
 
unsigned int NDim (void) const
 
double DoEval (const double *xin) const
 
d3Xsec_dOmegaldThetapiClone (void) const
 
void SetE_lep (double E_lepton) const
 

Private Attributes

const XSecAlgorithmIfModel
 
const InteractionfInteraction
 
double fElep
 

Detailed Description

.....................................................................................

genie::utils::gsl::d3Xsec_dOmegaldThetapi A 3-D cross section function (fixed E_nu) Steve Dennis - for the Alvarez-Russo cross-section

Definition at line 344 of file GSLXSecFunc.h.

Constructor & Destructor Documentation

genie::utils::gsl::d3Xsec_dOmegaldThetapi::d3Xsec_dOmegaldThetapi ( const XSecAlgorithmI m,
const Interaction i 
)

Definition at line 774 of file GSLXSecFunc.cxx.

775  :
776 ROOT::Math::IBaseFunctionMultiDim(),
777 fModel(m),
778 fInteraction(i),
779 fElep(-1)
780 {
781 
782 }
genie::utils::gsl::d3Xsec_dOmegaldThetapi::~d3Xsec_dOmegaldThetapi ( )

Definition at line 783 of file GSLXSecFunc.cxx.

784 {
785 
786 }

Member Function Documentation

genie::utils::gsl::d3Xsec_dOmegaldThetapi * genie::utils::gsl::d3Xsec_dOmegaldThetapi::Clone ( void  ) const
double genie::utils::gsl::d3Xsec_dOmegaldThetapi::DoEval ( const double *  xin) const

Definition at line 791 of file GSLXSecFunc.cxx.

References genie::units::cm2, E, fElep, fInteraction, fModel, genie::Interaction::FSPrimLepton(), genie::InitialState::GetProbeP4(), genie::Interaction::InitStatePtr(), genie::ProcessInfo::IsWeakCC(), kinematics(), genie::Interaction::KinePtr(), genie::constants::kNucleonMass, genie::constants::kPi0Mass, genie::constants::kPionMass, genie::kPSElOlTpifE, genie::kRfLab, Mag2(), genie::Range1D_t::max, genie::Interaction::PhaseSpace(), genie::Interaction::ProcInfo(), genie::utils::kinematics::Q2(), genie::Kinematics::SetFSLeptonP4(), genie::Kinematics::SetHadSystP4(), genie::Kinematics::Setx(), genie::Kinematics::Sety(), ana::Sqrt(), genie::utils::kinematics::UpdateWQ2FromXY(), submit_syst::x, genie::KPhaseSpace::XLim(), genie::XSecAlgorithmI::XSec(), xsec, and submit_syst::y.

792 {
793 // inputs:
794 // theta l [rad]
795 // phi_l [rad]
796 // phi pi [rad]
797 // outputs:
798 // differential cross section [10^-38 cm^2]
799 //
801  const TLorentzVector * P4_nu = fInteraction->InitStatePtr()->GetProbeP4(kRfLab);
802  double E_nu = P4_nu->E();
803 
804  double E_l = fElep;
805 
806  double theta_l = xin[0];
807  double phi_l = xin[1];
808  double theta_pi = xin[2];
809  double phi_pi = 0;
810 
811  double sin_theta_l = TMath::Sin(theta_l);
812  double sin_theta_pi = TMath::Sin(theta_pi);
813 
814  double E_pi= E_nu-E_l;
815 
816  double y = E_pi/E_nu;
817 
818  double m_l = fInteraction->FSPrimLepton()->Mass();
819  if (E_l < m_l) {
820  return 0.;
821  }
822 
823  double m_pi;
824  if ( fInteraction->ProcInfo().IsWeakCC() ) {
825  m_pi = constants::kPionMass;
826  }
827  else {
828  m_pi = constants::kPi0Mass;
829  }
830 
831  double p_l = TMath::Sqrt(E_l*E_l - m_l*m_l);
832  TVector3 lepton_3vector = TVector3(0,0,0);
833  lepton_3vector.SetMagThetaPhi(p_l,theta_l,phi_l);
834  TLorentzVector P4_lep = TLorentzVector(lepton_3vector , E_l );
835 
836  double p_pi = TMath::Sqrt(E_pi*E_pi - m_pi*m_pi);
837  TVector3 pion_3vector = TVector3(0,0,0);
838  pion_3vector.SetMagThetaPhi(p_pi,theta_pi,phi_pi);
839  TLorentzVector P4_pion = TLorentzVector(pion_3vector , E_pi);
840 
841  double Q2 = -(*P4_nu-P4_lep).Mag2();
842 
843  double x = Q2/(2*E_pi*constants::kNucleonMass);
844 
846 
847  if ( x < xlim.min || x > xlim.max ) {
848  return 0.;
849  }
850 
851  kinematics->Setx(x);
852  kinematics->Sety(y);
854 
855  kinematics->SetFSLeptonP4(P4_lep );
856  kinematics->SetHadSystP4 (P4_pion); // use Hadronic System variable to store pion momentum
857 
858  delete P4_nu;
859 
860  double xsec = (sin_theta_l * sin_theta_pi) * fModel->XSec(fInteraction,kPSElOlTpifE);
861  return xsec/(1E-38 * units::cm2);
862 }
const KPhaseSpace & PhaseSpace(void) const
Definition: Interaction.h:73
bool IsWeakCC(void) const
static const double kNucleonMass
Definition: Constants.h:78
double Q2(const Interaction *const i)
Definition: KineUtils.cxx:991
Kinematics * KinePtr(void) const
Definition: Interaction.h:76
virtual double XSec(const Interaction *i, KinePhaseSpace_t k=kPSfE) const =0
Compute the cross section for the input interaction.
A simple [min,max] interval for doubles.
Definition: Range1.h:43
static const double kPi0Mass
Definition: Constants.h:75
Generated/set kinematical variables for an event.
Definition: Kinematics.h:40
static const double cm2
Definition: Units.h:77
void SetFSLeptonP4(const TLorentzVector &p4)
Definition: Kinematics.cxx:307
Float_t E
Definition: plot.C:20
Double_t xsec[nknots]
Definition: testXsec.C:47
TParticlePDG * FSPrimLepton(void) const
final state primary lepton
void Setx(double x, bool selected=false)
Definition: Kinematics.cxx:241
float Mag2() const
void UpdateWQ2FromXY(const Interaction *in)
Definition: KineUtils.cxx:1185
double max
Definition: Range1.h:54
static const double kPionMass
Definition: Constants.h:74
Var Sqrt(const Var &v)
Use to take sqrt of a var.
Definition: Var.cxx:326
void Sety(double y, bool selected=false)
Definition: Kinematics.cxx:253
void SetHadSystP4(const TLorentzVector &p4)
Definition: Kinematics.cxx:317
InitialState * InitStatePtr(void) const
Definition: Interaction.h:74
Range1D_t XLim(void) const
x limits
const ProcessInfo & ProcInfo(void) const
Definition: Interaction.h:70
void kinematics()
Definition: kinematics.C:10
TLorentzVector * GetProbeP4(RefFrame_t rf=kRfHitNucRest) const
unsigned int genie::utils::gsl::d3Xsec_dOmegaldThetapi::NDim ( void  ) const

Definition at line 787 of file GSLXSecFunc.cxx.

Referenced by genie::utils::gsl::dXSec_dElep_AR::DoEval().

788 {
789  return 3;
790 }
void genie::utils::gsl::d3Xsec_dOmegaldThetapi::SetE_lep ( double  E_lepton) const

Definition at line 871 of file GSLXSecFunc.cxx.

References fElep.

Referenced by Clone(), and genie::utils::gsl::dXSec_dElep_AR::DoEval().

872 {
873  fElep = E_lepton;
874 }

Member Data Documentation

double genie::utils::gsl::d3Xsec_dOmegaldThetapi::fElep
mutableprivate

Definition at line 363 of file GSLXSecFunc.h.

Referenced by Clone(), DoEval(), and SetE_lep().

const Interaction* genie::utils::gsl::d3Xsec_dOmegaldThetapi::fInteraction
private

Definition at line 362 of file GSLXSecFunc.h.

Referenced by Clone(), and DoEval().

const XSecAlgorithmI* genie::utils::gsl::d3Xsec_dOmegaldThetapi::fModel
private

Definition at line 361 of file GSLXSecFunc.h.

Referenced by Clone(), and DoEval().


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