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

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

Inheritance diagram for genie::utils::gsl::d4Xsec_dEldThetaldOmegapi:

Public Member Functions

 d4Xsec_dEldThetaldOmegapi (const XSecAlgorithmI *m, const Interaction *i)
 
 ~d4Xsec_dEldThetaldOmegapi ()
 
unsigned int NDim (void) const
 
double DoEval (const double *xin) const
 
ROOT::Math::IBaseFunctionMultiDim * Clone (void) const
 
double GetFactor () const
 
void SetFactor (double factor)
 

Private Attributes

const XSecAlgorithmIfModel
 
const InteractionfInteraction
 
double fFactor
 

Detailed Description

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

genie::utils::gsl::d4Xsec_dEldThetaldOmegapi A 4-D cross section function (fixed E_nu) DANIEL - for the Alvarez-Russo cross-section

Definition at line 319 of file GSLXSecFunc.h.

Constructor & Destructor Documentation

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

Definition at line 671 of file GSLXSecFunc.cxx.

672  :
673 ROOT::Math::IBaseFunctionMultiDim(),
674 fModel(m),
675 fInteraction(i)
676 {
677 
678 }
genie::utils::gsl::d4Xsec_dEldThetaldOmegapi::~d4Xsec_dEldThetaldOmegapi ( )

Definition at line 679 of file GSLXSecFunc.cxx.

680 {
681 
682 }

Member Function Documentation

ROOT::Math::IBaseFunctionMultiDim * genie::utils::gsl::d4Xsec_dEldThetaldOmegapi::Clone ( void  ) const
double genie::utils::gsl::d4Xsec_dEldThetaldOmegapi::DoEval ( const double *  xin) const

Definition at line 687 of file GSLXSecFunc.cxx.

References genie::units::cm2, E, fFactor, 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.

688 {
689 // inputs:
690 // El [GeV]
691 // theta l [rad]
692 // theta pi [rad]
693 // phi pi [rad]
694 // outputs:
695 // differential cross section [10^-38 cm^2]
696 //
698  const TLorentzVector * P4_nu = fInteraction->InitStatePtr()->GetProbeP4(kRfLab);
699  double E_nu = P4_nu->E();
700 
701  double E_l = xin[0];
702  double theta_l = xin[1];
703  double phi_l = 0.0;
704  double theta_pi = xin[2];
705  double phi_pi = xin[3];
706 
707  double sin_theta_l = TMath::Sin(theta_l);
708  double sin_theta_pi = TMath::Sin(theta_pi);
709 
710  double E_pi= E_nu-E_l;
711 
712  double y = E_pi/E_nu;
713 
714  double m_l = fInteraction->FSPrimLepton()->Mass();
715  if (E_l < m_l) {
716  return 0.;
717  }
718 
719  double m_pi;
720  if ( fInteraction->ProcInfo().IsWeakCC() ) {
721  m_pi = constants::kPionMass;
722  }
723  else {
724  m_pi = constants::kPi0Mass;
725  }
726 
727  double p_l = TMath::Sqrt(E_l*E_l - m_l*m_l);
728  TVector3 lepton_3vector = TVector3(0,0,0);
729  lepton_3vector.SetMagThetaPhi(p_l,theta_l,phi_l);
730  TLorentzVector P4_lep = TLorentzVector(lepton_3vector , E_l );
731 
732  double p_pi = TMath::Sqrt(E_pi*E_pi - m_pi*m_pi);
733  TVector3 pion_3vector = TVector3(0,0,0);
734  pion_3vector.SetMagThetaPhi(p_pi,theta_pi,phi_pi);
735  TLorentzVector P4_pion = TLorentzVector(pion_3vector , E_pi);
736 
737  double Q2 = -(*P4_nu-P4_lep).Mag2();
738 
739  double x = Q2/(2*E_pi*constants::kNucleonMass);
740 
742 
743  if ( x < xlim.min || x > xlim.max ) {
744  return 0.;
745  }
746 
747  kinematics->Setx(x);
748  kinematics->Sety(y);
750 
751  kinematics->SetFSLeptonP4(P4_lep );
752  kinematics->SetHadSystP4 (P4_pion); // use Hadronic System variable to store pion momentum
753 
754  delete P4_nu;
755 
756  double xsec = sin_theta_l * sin_theta_pi * fModel->XSec(fInteraction,kPSElOlTpifE);
757  return fFactor * xsec/(1E-38 * units::cm2);
758 }
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
double genie::utils::gsl::d4Xsec_dEldThetaldOmegapi::GetFactor ( void  ) const

Definition at line 769 of file GSLXSecFunc.cxx.

References fFactor.

770 {
771  return fFactor;
772 }
unsigned int genie::utils::gsl::d4Xsec_dEldThetaldOmegapi::NDim ( void  ) const

Definition at line 683 of file GSLXSecFunc.cxx.

684 {
685  return 4;
686 }
void genie::utils::gsl::d4Xsec_dEldThetaldOmegapi::SetFactor ( double  factor)

Definition at line 765 of file GSLXSecFunc.cxx.

References fFactor.

Referenced by genie::COHKinematicsGenerator::MaxXSec_AlvarezRuso().

766 {
767  fFactor = factor;
768 }

Member Data Documentation

double genie::utils::gsl::d4Xsec_dEldThetaldOmegapi::fFactor
private

Definition at line 336 of file GSLXSecFunc.h.

Referenced by DoEval(), GetFactor(), and SetFactor().

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

Definition at line 335 of file GSLXSecFunc.h.

Referenced by Clone(), and DoEval().

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

Definition at line 334 of file GSLXSecFunc.h.

Referenced by Clone(), and DoEval().


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