14 #include <TClonesArray.h>
31 #ifdef __GENIE_PYTHIA6_ENABLED__
32 #if ROOT_VERSION_CODE >= ROOT_VERSION(5,15,6)
33 #include <TMCParticle.h>
35 #include <TMCParticle6.h>
37 #endif // __GENIE_PYTHIA6_ENABLED__
39 using namespace genie;
40 using namespace genie::constants;
41 using namespace genie::utils::math;
74 TVector3 unit_nu = nu->
P4()->Vect().Unit();
87 long double costhCM = n1;
88 long double sinthCM = sqrtl(1-costhCM*costhCM);
90 long double t =
born->
GetT( mlin, mlout, s, n1 );
92 long double omx = powl(n2, 1.0/zeta );
93 long double s_r = s*( 1.-omx );
96 long double EnuinCM = (s_r-mlin*mlin)/sqrtl(s_r)/2.;
97 long double beta = (powl(Enuin,2)-powl(EnuinCM,2))/(powl(Enuin,2)+powl(EnuinCM,2));
103 long double ElpoutCM = (s_r+mlout*mlout)/sqrtl(s_r)/2.;
104 long double EnuoutCM = (s_r-mlout*mlout)/sqrtl(s_r)/2.;
106 LongLorentzVector p4_nuout( 0., -EnuoutCM*sinthCM, -EnuoutCM*costhCM, EnuoutCM );
111 TLorentzVector p4lp_o( (
double)p4_lpout.
Px(), (double)p4_lpout.
Py(), (double)p4_lpout.
Pz(), (double)p4_lpout.
E() );
112 TLorentzVector p4nu_o( (
double)p4_nuout.
Px(), (double)p4_nuout.
Py(), (double)p4_nuout.
Pz(), (double)p4_nuout.
E() );
116 double phi = 2*
kPi * rnd->RndLep().Rndm();
121 p4lp_o.RotateUz(unit_nu);
122 p4nu_o.RotateUz(unit_nu);
126 else pdgvout = nu->
Pdg();
131 event->Summary()->KinePtr()->SetFSLeptonP4(p4lp_o);
bool IsWeakCC(void) const
double GetT(double mlin, double mlout, double s, double costhCM)
static RandomGen * Instance()
Access instance.
const TLorentzVector * P4(void) const
Defines the EventRecordVisitorI interface. Concrete implementations of this interface use the 'Visito...
static constexpr double s
void Configure(const Registry &config)
static const double kElectronMass
A singleton holding random number generator classes. All random number generation in GENIE should tak...
int FSPrimLeptonPdg(void) const
final state primary lepton pdg
Summary information for an interaction.
A class encapsulating an enumeration of interaction types (EM, Weak-CC, Weak-NC) and scattering types...
const Kinematics & Kine(void) const
virtual void Configure(const Registry &config)
double GetKV(KineVar_t kv) const
double GetS(double mlin, double Enuin)
TParticlePDG * FSPrimLepton(void) const
final state primary lepton
Born level nu-electron cross section.
void ProcessEventRecord(GHepRecord *event) const
void BoostZ(long double bz)
const TLorentzVector * X4(void) const
A registry. Provides the container for algorithm configuration parameters.
const InitialState & InitState(void) const
const ProcessInfo & ProcInfo(void) const
double ProbeE(RefFrame_t rf) const
GENIE's GHEP MC event record.
Most commonly used PDG codes. A set of utility functions to handle PDG codes is provided in PDGUtils...
STDHEP-like event record entry that can fit a particle or a nucleus.
Initial State information.