Public Member Functions | Private Attributes | List of all members
genie::utils::gsl::d5Xsec_dEldOmegaldOmegapi 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::d5Xsec_dEldOmegaldOmegapi:

Public Member Functions

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

Private Attributes

const XSecAlgorithmIfModel
 
const InteractionfInteraction
 

Detailed Description

Definition at line 297 of file GSLXSecFunc.h.

Constructor & Destructor Documentation

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

Definition at line 574 of file GSLXSecFunc.cxx.

575  :
576 ROOT::Math::IBaseFunctionMultiDim(),
577 fModel(m),
578 fInteraction(i)
579 {
580 
581 }
genie::utils::gsl::d5Xsec_dEldOmegaldOmegapi::~d5Xsec_dEldOmegaldOmegapi ( )

Definition at line 582 of file GSLXSecFunc.cxx.

583 {
584 
585 }

Member Function Documentation

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

Definition at line 590 of file GSLXSecFunc.cxx.

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

591 {
592 // inputs:
593 // x [-]
594 // y [-]
595 // outputs:
596 // differential cross section [10^-38 cm^2]
597 //
599  const TLorentzVector * P4_nu = fInteraction->InitStatePtr()->GetProbeP4(kRfLab);
600  double E_nu = P4_nu->E();
601 
602  double E_l = xin[0];
603  double theta_l = xin[1];
604  double phi_l = xin[2];
605  double theta_pi = xin[3];
606  double phi_pi = xin[4];
607 
608  double E_pi= E_nu-E_l;
609 
610  double y = E_pi/E_nu;
611 
612  double m_l = fInteraction->FSPrimLepton()->Mass();
613  if (E_l < m_l) {
614  return 0.;
615  }
616 
617  double m_pi;
618  if ( fInteraction->ProcInfo().IsWeakCC() ) {
619  m_pi = constants::kPionMass;
620  }
621  else {
622  m_pi = constants::kPi0Mass;
623  }
624 
625  double p_l = TMath::Sqrt(E_l*E_l - m_l*m_l);
626  TVector3 lepton_3vector = TVector3(0,0,0);
627  lepton_3vector.SetMagThetaPhi(p_l,theta_l,phi_l);
628  TLorentzVector P4_lep = TLorentzVector(lepton_3vector , E_l );
629 
630  double p_pi = TMath::Sqrt(E_pi*E_pi - m_pi*m_pi);
631  TVector3 pion_3vector = TVector3(0,0,0);
632  pion_3vector.SetMagThetaPhi(p_pi,theta_pi,phi_pi);
633  TLorentzVector P4_pion = TLorentzVector(pion_3vector , E_pi);
634 
635  double Q2 = -(*P4_nu-P4_lep).Mag2();
636 
637  double x = Q2/(2*E_pi*constants::kNucleonMass);
638 
640 
641  if ( x < xlim.min || x > xlim.max ) {
642  return 0.;
643  }
644 
645  kinematics->Setx(x);
646  kinematics->Sety(y);
648 
649  kinematics->SetFSLeptonP4(P4_lep );
650  kinematics->SetHadSystP4 (P4_pion); // use Hadronic System variable to store pion momentum
651 
652  delete P4_nu;
653 
654  double xsec = fModel->XSec(fInteraction)*TMath::Sin(theta_l)*TMath::Sin(theta_pi);
655  return xsec/(1E-38 * units::cm2);
656 }
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::d5Xsec_dEldOmegaldOmegapi::NDim ( void  ) const

Definition at line 586 of file GSLXSecFunc.cxx.

587 {
588  return 5;
589 }

Member Data Documentation

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

Definition at line 310 of file GSLXSecFunc.h.

Referenced by Clone(), and DoEval().

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

Definition at line 309 of file GSLXSecFunc.h.

Referenced by Clone(), and DoEval().


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