22 using namespace genie;
23 using namespace genie::utils::print;
57 TLorentzVector v4(0,0,0,0);
72 LOG(
"HadronicVtx",
pDEBUG) <<
"Adding final state nucleus";
78 <<
"Initial state not a nucleus - no remnant nucleus to add";
85 int npdgc = nucleon->
Pdg();
91 TParticlePDG * particle = 0;
96 <<
"No particle with [A = " << A <<
", Z = " << Z
97 <<
", pdgc = " << ipdgc <<
"] in PDGLibrary!";
100 double Mf = particle->Mass();
101 double Mf2 = TMath::Power(Mf,2);
104 double px = -1.* nucleon->
Px();
105 double py = -1.* nucleon->
Py();
106 double pz = -1.* nucleon->
Pz();
107 double E = TMath::Sqrt(Mf2 + nucleon->
P4()->Vect().Mag2());
111 <<
"Adding nucleus [A = " << A <<
", Z = " << Z
112 <<
", pdgc = " << ipdgc <<
"]";
116 ipdgc,
kIStStableFinalState, mom,-1,-1,-1, px,py,pz,E, 0,0,0,0);
147 const TLorentzVector & p4nu = *(nu->
P4());
148 const TLorentzVector & p4N = *(N ->
P4());
149 const TLorentzVector & p4l = *(l ->
P4());
151 TLorentzVector pX4 = p4nu + p4N - p4l;
167 const TLorentzVector & p4nu = *(nu->
P4());
168 const TLorentzVector & p4l = *(l ->
P4());
170 TLorentzVector pq4 = p4nu - p4l;
173 <<
"\n Momentum Transfer [LAB]: " <<
P4AsString(&pq4);
186 TVector3 beta = pH.BoostVector();
198 int hadronShowerCharge = 0;
207 double qfsl = interaction->
FSPrimLepton()->Charge() / 3.;
212 hadronShowerCharge = (int) (qp + qnuc - qfsl);
214 return hadronShowerCharge;
TLorentzVector Hadronic4pLAB(GHepRecord *event_rec) const
virtual Interaction * Summary(void) const
int HitNucPdg(void) const
const TLorentzVector * P4(void) const
Kinematics * KinePtr(void) const
Defines the EventRecordVisitorI interface. Concrete implementations of this interface use the 'Visito...
const EventRecordVisitorI * fPreINukeDecayer
void AddTargetNucleusRemnant(GHepRecord *event_rec) const
HadronicSystemGenerator()
string P4AsString(const TLorentzVector *p)
virtual int HitNucleonPosition(void) const
TParticlePDG * Probe(void) const
int HadronShowerCharge(GHepRecord *event_rec) const
double Pz(void) const
Get Pz.
double Px(void) const
Get Px.
virtual GHepParticle * Probe(void) 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 ProcessEventRecord(GHepRecord *event_rec) const =0
static constexpr double A
virtual GHepParticle * FinalStatePrimaryLepton(void) const
TLorentzVector MomentumTransferLAB(GHepRecord *event_rec) const
virtual GHepParticle * TargetNucleus(void) const
TParticlePDG * FSPrimLepton(void) const
final state primary lepton
static PDGLibrary * Instance(void)
virtual GHepParticle * HitNucleon(void) const
int ResonanceCharge(GHepRecord *event_rec) const
int IonPdgCode(int A, int Z)
void SetHadSystP4(const TLorentzVector &p4)
const InitialState & InitState(void) const
virtual void AddParticle(const GHepParticle &p)
TParticlePDG * Find(int pdgc, bool must_exist=true)
const Target & Tgt(void) const
TVector3 HCM2LAB(GHepRecord *event_rec) const
void AddFinalHadronicSyst(GHepRecord *event_rec) const
const int kPdgHadronicSyst
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.
string Vec3AsString(const TVector3 *vec)
virtual int TargetNucleusPosition(void) const
~HadronicSystemGenerator()
Initial State information.
void PreHadronTransportDecays(GHepRecord *event_rec) const
double Py(void) const
Get Py.