CMS 3D CMS Logo

 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Properties Friends Macros Groups Pages
Functions
PetrukhinModel.cc File Reference
#include <fstream>
#include "TF1.h"
#include "FastSimulation/MaterialEffects/interface/PetrukhinModel.h"
#include <cmath>

Go to the source code of this file.

Functions

double PetrukhinFunc (double *x, double *p)
 

Function Documentation

double PetrukhinFunc ( double *  x,
double *  p 
)

Definition at line 22 of file PetrukhinModel.cc.

References funct::A, alpha, TtFullHadDaughter::B, CommonMethods::delta(), validate-o2o-wbm::f, funct::pow(), and BeamSpotPI::Z.

Referenced by MuonBremsstrahlungSimulator::compute(), and fastsim::MuonBremsstrahlung::interact().

22  {
23  //Function independent variable
24  double nu = x[0]; //fraction of muon's energy transferred to the photon
25 
26  // Parameters
27  double E = p[0]; //Muon Energy (in GeV)
28  double A = p[1]; // Atomic weight
29  double Z = p[2]; // Atomic number
30 
31  /*
32 
34 //Function of Muom Brem using nuclear screening correction
35 //Ref: http://pdg.lbl.gov/2008/AtomicNuclearProperties/adndt.pdf
36 
37  //Physical constants
38  double B = 182.7;
39  double ee = sqrt(2.7181) ; // sqrt(e)
40  double ZZ= pow( Z,-1./3.); // Z^-1/3
42  double emass = 0.0005109990615; // electron mass (GeV/c^2)
43  double mumass = 0.105658367;//mu mass (GeV/c^2)
44 
45  double re = 2.817940285e-13;// Classical electron radius (Units: cm)
46  double alpha = 1./137.03599976; // fine structure constant
47  double Dn = 1.54* (pow(A,0.27));
48  double constant = pow((2.0 * Z * emass/mumass * re ),2.0);
50 
51  double delta = (mumass * mumass * nu) /(2.* E * (1.- nu));
52 
53  double Delta_n = TMath::Log(Dn / (1.+ delta *( Dn * ee -2.)/ mumass)); //nuclear screening correction
54 
55  double Phi = TMath::Log((B * mumass * ZZ / emass)/ (1.+ delta * ee * B * ZZ / emass)) - Delta_n;//phi(delta)
56 
57  //Diff. Cross Section for Muon Brem from a screened nuclear (Equation 16: REF: LBNL-44742)
58  double f = alpha * constant *(4./3.-4./3.*nu + nu*nu)*Phi/nu;
59 */
60 
62  // Function for Muon Brem Xsec from G4
64  //Physical constants
65  double B = 183.;
66  double Bl = 1429.;
67  double ee = 1.64872; // sqrt(e)
68  double Z13 = pow(Z, -1. / 3.); // Z^-1/3
69  double Z23 = pow(Z, -2. / 3.); // Z^-2/3
70 
71  //Original values of paper
72  double emass = 0.0005109990615; // electron mass (GeV/c^2)
73  double mumass = 0.105658367; // muon mass (GeV/c^2)
74  // double re = 2.817940285e-13; // Classical electron radius (Units: cm)
75  double alpha = 0.00729735; // 1./137.03599976; // fine structure constant
76  double constant = 1.85736e-30; // pow( ( emass / mumass * re ) , 2.0);
77 
78  double Dn = 1.54 * (pow(A, 0.27));
79  double Dnl = pow(Dn, (1. - 1. / Z));
80 
81  double delta = (mumass * mumass * nu) / (2. * E * (1. - nu));
82 
83  double Phi_n = TMath::Log(B * Z13 * (mumass + delta * (Dnl * ee - 2)) / (Dnl * (emass + delta * ee * B * Z13)));
84 
85  double Phi_e =
86  TMath::Log((Bl * Z23 * mumass) / (1. + delta * mumass / (emass * emass * ee)) / (emass + delta * ee * Bl * Z23));
87 
88  //Diff. Cross Section for Muon Brem from G4 ( without NA/A factor )
89  double f = 16. / 3. * alpha * constant * Z * (Z * Phi_n + Phi_e) * (1. / nu) * (1. - nu + 0.75 * nu * nu);
90 
91  return f;
92 }
float alpha
Definition: AMPTWrapper.h:105
uint16_t const *__restrict__ x
Definition: gpuClustering.h:39
static const std::string B
Power< A, B >::type pow(const A &a, const B &b)
Definition: Power.h:29