GENIEGenerator
Loading...
Searching...
No Matches
genie::utils::gsl::d5XSecAR Class Reference

#include <GSLXSecFunc.h>

Inheritance diagram for genie::utils::gsl::d5XSecAR:
[legend]
Collaboration diagram for genie::utils::gsl::d5XSecAR:
[legend]

Public Member Functions

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

Private Attributes

const XSecAlgorithmIfModel
const InteractionfInteraction
bool flip

Detailed Description

Definition at line 325 of file GSLXSecFunc.h.

Constructor & Destructor Documentation

◆ d5XSecAR()

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

Definition at line 600 of file GSLXSecFunc.cxx.

601 :
602ROOT::Math::IBaseFunctionMultiDim(),
603fModel(m),
604fInteraction(i),
605flip(false)
606{
607
608}
const Interaction * fInteraction
const XSecAlgorithmI * fModel

References fInteraction, flip, and fModel.

◆ ~d5XSecAR()

genie::utils::gsl::d5XSecAR::~d5XSecAR ( )

Definition at line 609 of file GSLXSecFunc.cxx.

610{
611}

Member Function Documentation

◆ Clone()

ROOT::Math::IBaseFunctionMultiDim * genie::utils::gsl::d5XSecAR::Clone ( void ) const

Definition at line 691 of file GSLXSecFunc.cxx.

692{
693 return
694 new genie::utils::gsl::d5XSecAR(fModel,fInteraction);
695}

References fInteraction, and fModel.

◆ DoEval()

double genie::utils::gsl::d5XSecAR::DoEval ( const double * xin) const

Definition at line 617 of file GSLXSecFunc.cxx.

618{
619// inputs:
620// x [-]
621// y [-]
622// outputs:
623// differential cross section [10^-38 cm^2]
624//
625
626 Kinematics * kinematics = fInteraction->KinePtr();
627 const TLorentzVector * P4_nu = fInteraction->InitStatePtr()->GetProbeP4(kRfLab);
628 double E_nu = P4_nu->E();
629
630 double E_l = xin[0];
631 double theta_l = xin[1];
632 double phi_l = xin[2];
633 double theta_pi = xin[3];
634 double phi_pi = xin[4];
635
636 double E_pi= E_nu-E_l;
637
638 double y = E_pi/E_nu;
639
640 double m_l = fInteraction->FSPrimLepton()->Mass();
641 if (E_l < m_l) {
642 return 0.;
643 }
644
645 double m_pi;
646 if ( fInteraction->ProcInfo().IsWeakCC() ) {
648 }
649 else {
650 m_pi = constants::kPi0Mass;
651 }
652
653
654 double p_l = TMath::Sqrt(E_l*E_l - m_l*m_l);
655 TVector3 lepton_3vector = TVector3(0,0,0);
656 lepton_3vector.SetMagThetaPhi(p_l,theta_l,phi_l);
657 TLorentzVector P4_lep = TLorentzVector(lepton_3vector , E_l );
658
659 double p_pi = TMath::Sqrt(E_pi*E_pi - m_pi*m_pi);
660 TVector3 pion_3vector = TVector3(0,0,0);
661 pion_3vector.SetMagThetaPhi(p_pi,theta_pi,phi_pi);
662 TLorentzVector P4_pion = TLorentzVector(pion_3vector , E_pi);
663
664 double Q2 = -(*P4_nu-P4_lep).Mag2();
665
666 double x = Q2/(2*E_pi*constants::kNucleonMass);
667
668 Range1D_t xlim = fInteraction->PhaseSpace().XLim();
669
670 if ( x < xlim.min || x > xlim.max ) {
671 return 0.;
672 }
673
674 kinematics->Setx(x);
675 kinematics->Sety(y);
677
678 kinematics->SetFSLeptonP4(P4_lep );
679 kinematics->SetHadSystP4 (P4_pion); // use Hadronic System variable to store pion momentum
680
681 double xsec = fModel->XSec(fInteraction);
682 if (xsec>0 && flip) {
683 xsec = xsec*-1.0;
684 }
685 delete P4_nu;
686 //return xsec/(1E-38 * units::cm2);
687 return xsec;
688}
void SetHadSystP4(const TLorentzVector &p4)
void Setx(double x, bool selected=false)
void Sety(double y, bool selected=false)
void SetFSLeptonP4(const TLorentzVector &p4)
void UpdateWQ2FromXY(const Interaction *in)
double Q2(const Interaction *const i)
@ kRfLab
Definition RefFrame.h:26

References fInteraction, flip, fModel, genie::constants::kNucleonMass, genie::constants::kPi0Mass, genie::constants::kPionMass, genie::kRfLab, genie::Range1D_t::max, and genie::utils::kinematics::UpdateWQ2FromXY().

◆ NDim()

unsigned int genie::utils::gsl::d5XSecAR::NDim ( void ) const

Definition at line 613 of file GSLXSecFunc.cxx.

614{
615 return 5;
616}

◆ SetFlip()

void genie::utils::gsl::d5XSecAR::SetFlip ( bool b)
inline

Definition at line 334 of file GSLXSecFunc.h.

334{ flip = b; }

References flip.

Member Data Documentation

◆ fInteraction

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

Definition at line 338 of file GSLXSecFunc.h.

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

◆ flip

bool genie::utils::gsl::d5XSecAR::flip
private

Definition at line 339 of file GSLXSecFunc.h.

Referenced by d5XSecAR(), DoEval(), and SetFlip().

◆ fModel

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

Definition at line 337 of file GSLXSecFunc.h.

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


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