Functions
genie::utils::phys Namespace Reference

Various physics formulas & utilities. More...

Functions

double FormationZone (double m, const TLorentzVector &p, const TVector3 &p3hadr, double ct0, double K)
 
double R99118 (double x, double Q2)
 PRL 98, 142301, 2007. More...
 
double RWhitlow (double x, double Q2)
 

Detailed Description

Various physics formulas & utilities.

Author
Costas Andreopoulos <costas.andreopoulos stfc.ac.uk> University of Liverpool & STFC Rutherford Appleton Lab

January 22, 2008

Copyright (c) 2003-2019, The GENIE Collaboration For the full text of the license visit http://copyright.genie-mc.org or see $GENIE/LICENSE

Function Documentation

double genie::utils::phys::FormationZone ( double  m,
const TLorentzVector &  p,
const TVector3 &  p3hadr,
double  ct0,
double  K 
)

Definition at line 29 of file PhysUtils.cxx.

References LOG, m, Munits::m2, P, make_associated_cosmic_defs::p3, and pNOTICE.

Referenced by genie::DISHadronicSystemGenerator::SimulateFormationZone().

32 {
33 // m -> hadon mass (on-shell)
34 // p -> hadron momentum 4-vector (Lab)
35 // p3hadr -> hadronic-system momentum 3-vector (Lab)
36 
37  TVector3 p3 = p4.Vect(); // hadron's: p (px,py,pz)
38  double m2 = m*m; // m^2
39  double P = p4.P(); // |p|
40  double Pt = p3.Pt(p3hadr); // pT
41  double Pt2 = Pt*Pt; // pT^2
42  double fz = P*ct0*m/(m2+K*Pt2); // formation zone, in fm
43 
44  LOG("PhysUtil", pNOTICE)
45  << "Formation zone(|P| = " << P << " GeV, Pt = " << Pt
46  << " GeV, ct0 = " << ct0 << " fm, K = " << K << ") = " << fz << " fm";
47 
48  return fz;
49 }
Double_t K
#define P(a, b, c, d, e, x)
#define LOG(stream, priority)
A macro that returns the requested log4cpp::Category appending a string (using the FILE...
Definition: Messenger.h:97
static constexpr Double_t m2
Definition: Munits.h:145
#define pNOTICE
Definition: Messenger.h:62
double genie::utils::phys::R99118 ( double  x,
double  Q2 
)

PRL 98, 142301, 2007.

Definition at line 51 of file PhysUtils.cxx.

References genie::units::A, C, norm, genie::utils::kinematics::Q2(), R, and ana::Sqrt().

52 {
53 // Adapted from fortran code sent by V.Tvaskis
54 // PRL 98, 142301, 2007
55 //
56  double A[3] = { .06723, .46714, 1.89794 };
57  double B[3] = { .06347, .57468, -.35342 };
58  double C[3] = { .05992, .50885, 2.10807 };
59 
60  double consq2=2.; // Joining point of r1990 and re99118
61  double R=0;
62 
63  if(Q2 >= consq2) {
64  double FAC = 1+12.*(Q2/(1.+Q2))*(.125*.125/(x*x+.125*.125));
65  double RLOG = FAC/TMath::Log(Q2/.04);
66  double Q2thr = 5.*TMath::Power(1.-x,5);
67  double R_A = A[0]*RLOG + A[1] / TMath::Sqrt( TMath::Sqrt( TMath::Power(Q2,4)+TMath::Power(A[2],4) ));
68  double R_B = B[0]*RLOG + B[1]/Q2 + B[2]/( TMath::Power(Q2,2) + TMath::Power(.3,2) );
69  double R_C = C[0]*RLOG + C[1]/TMath::Sqrt( TMath::Power(Q2-Q2thr,2) + TMath::Power(C[2],2) );
70  R = (R_A+R_B+R_C)/3.;
71  }
72 
73  if(Q2 < consq2) {
74  double FAC = 1+12.*(consq2/(1.+consq2))*(.125*.125/(x*x+.125*.125));
75  double RLOG = FAC/TMath::Log(consq2/.04);
76  double Q2thr = 5.*TMath::Power(1.-x,5);
77  double R_A = A[0]*RLOG + A[1]/TMath::Sqrt(TMath::Sqrt( TMath::Power(consq2,4)+TMath::Power(A[2],4) ));
78  double R_B = B[0]*RLOG + B[1]/consq2 + B[2]/( TMath::Power(consq2,2) + TMath::Power(.3,2) );
79  double R_C = C[0]*RLOG + C[1]/TMath::Sqrt( TMath::Power(consq2-Q2thr,2) + TMath::Power(C[2],2) );
80  double norm=(R_A+R_B+R_C)/3.;
81  R=norm*(1.0-TMath::Exp(-Q2*9.212));
82  }
83  return R;
84 }
double Q2(const Interaction *const i)
Definition: KineUtils.cxx:991
const double C
#define R(x)
static const double A
Definition: Units.h:82
Float_t norm
Var Sqrt(const Var &v)
Use to take sqrt of a var.
Definition: Var.cxx:324
double genie::utils::phys::RWhitlow ( double  x,
double  Q2 
)

Definition at line 86 of file PhysUtils.cxx.

References R, ss, chisquared::theta, and submit_syst::x2.

Referenced by genie::QPMDISStrucFuncBase::R().

87 {
88 // Adapted from NeuGEN's rmodel_mod()
89 //
90 // Hugh's comments in original code:
91 // from NuTeV code provided by Donna Naples, May 2005
92 // added form for R below qsq=.35 GEV**2 from hep-ex/030807
93 //
94 // NuTEV comments:
95 //
96 //C Revised to make HTWIST select between more than two different
97 //C values of R.
98 //C
99 //C HTWIST = 'F' ==> RQCD - WITH LIMIT R > (2MX)**2/Q2
100 //C HTWIST = 'T' ==> RSLAC - WITH LIMIT R > (2MX)**2/Q2
101 //C HTWIST = '0' ==> R = 0 (NOT TRUE, BUT USEFUL FOR STUDIES)
102 //C HTWIST = '2' ==> R =.2 (NOT TRUE, BUT USEFUL FOR STUDIES)
103 //C HTWIST = 'C' ==> R-CALLAN-GROSS = (2MX)**2/Q2
104 //C
105 //C HTWIST = 'W' ==> R PARAMETERIZATION FROM WHITLOW'S THESIS
106 //C HTWIST = '+' ==> R PARAMETRIZATION FROM WHITLOW +15%
107 //C HTWIST = 'P' ==> R PARAMETRIZATION FROM WHITLOW +0.03
108 //C HTWIST = 'M' ==> R PARAMETRIZATION FROM WHITLOW -0.03
109 //C
110 //C 22-DEC-92 WGS
111 //
112  const double C2 = TMath::Power(0.125, 2);
113  const double B1 = 0.0635;
114  const double B2 = 0.5747;
115  const double B3 = -0.3534;
116 
117  double Q2R = TMath::Max(Q2, 0.35);
118  double ss = TMath::Log(Q2R/.04);
119 
120  double x2 = TMath::Power(x, 2.);
121  double Q4R = TMath::Power(Q2R, 2.);
122  double Q4 = TMath::Power(Q2, 2.);
123 
124  double theta = 1. + (12.*Q2R/(Q2R+1.)) * (C2/(C2+x2));
125  double R = (B1/ss)*theta + B2/Q2R + B3/(Q4R+.09);
126 
127  R = TMath::Max(R,0.);
128 
129  if(Q2 < 0.35) {
130  R *= ( 3.207*(Q2/(Q4+1.)) );
131  }
132  return R;
133 }
double Q2(const Interaction *const i)
Definition: KineUtils.cxx:991
Float_t ss
Definition: plot.C:24
#define R(x)