33 using namespace genie;
34 using namespace genie::constants;
62 double y = interaction->
Kine().
y(
true);
74 <<
"Ev = " << Ev <<
", y = " << y <<
", -> El = " << El;
77 double Ev2 = TMath::Power(Ev,2);
78 double El2 = TMath::Power(El,2);
81 double ml2 = TMath::Power(ml,2);
82 double pl = TMath::Sqrt(El2-ml2);
83 double pv = TMath::Sqrt(Ev2-ml2);
85 assert(El2>=ml2&&Ev2>=ml2);
87 double Q2 = 2*(Ev-El)*me;
88 double costh = (El*Ev - ml2 -0.5*
Q2)/pl/pv;
89 double sinth = TMath::Sqrt( TMath::Max(0., 1-TMath::Power(costh,2.)) );
92 <<
"Q2 = " << Q2 <<
", cos(theta) = " << costh;
95 if( TMath::Abs(costh)>1 ) {
97 <<
"El = " << El <<
", Ev = " << Ev <<
", cos(theta) = " << costh;
100 assert(TMath::Abs(costh)<=1);
103 double plp = pl * costh;
104 double plt = pl * sinth;
107 <<
"fsl: E = " << El <<
", |p//| = " << plp <<
"[pT] = " << plt;
111 double phi = 2*
kPi * rnd->
RndLep().Rndm();
112 double pltx = plt * TMath::Cos(phi);
113 double plty = plt * TMath::Sin(phi);
116 TVector3 unit_nudir = evrec->
Probe()->
P4()->Vect().Unit();
120 TVector3 p3l(pltx,plty,plp);
121 p3l.RotateUz(unit_nudir);
124 TLorentzVector p4l(p3l,El);
~DMEOutgoingDarkGenerator()
TRandom3 & RndLep(void) const
rnd number generator used by final state primary lepton generators
double Q2(const Interaction *const i)
virtual Interaction * Summary(void) const
static RandomGen * Instance()
Access instance.
const TLorentzVector * P4(void) const
DMEOutgoingDarkGenerator()
static const double kElectronMass
A singleton holding random number generator classes. All random number generation in GENIE should tak...
Abstract class. Is used to pass common implementation to concrete implementations of the EventRecordV...
int FSPrimLeptonPdg(void) const
final state primary lepton pdg
virtual GHepParticle * Probe(void) const
double y(bool selected=false) const
Summary information for an interaction.
#define LOG(stream, priority)
A macro that returns the requested log4cpp::Category appending a string (using the FILE...
virtual void SetPolarization(GHepRecord *ev) const
const Kinematics & Kine(void) const
virtual void AddToEventRecord(GHepRecord *ev, int pdgc, const TLorentzVector &p4) const
void ProcessEventRecord(GHepRecord *event_rec) const
TParticlePDG * FSPrimLepton(void) const
final state primary lepton
const InitialState & InitState(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...
Initial State information.