30 using namespace genie;
31 using namespace genie::controls;
32 using namespace genie::constants;
33 using namespace genie::utils;
80 <<
"Simulating formation zone for the DIS hadronic system";
85 <<
"No nuclear target was found - No need to simulate formation zones";
91 double A = nucltgt->
A();
92 double R =
fR0 * TMath::Power(A, 1./3.);
93 R *= TMath::Max(
fNR,1.);
101 TVector3 p3hadr = hadronic_system->
P4()->Vect();
107 TObjArrayIter piter(evrec);
118 if(!apply_formation_zone)
continue;
121 <<
"Applying formation-zone to " << p->
Name();
123 double m = p->
Mass();
125 const TLorentzVector & p4 = *(p->
P4());
133 TVector3 dr = p->
P4()->Vect().Unit();
138 TLorentzVector dx4(dr,dt);
139 TLorentzVector x4new = *(p->
X4()) + dx4;
145 double r = x4new.Vect().Mag();
149 <<
"Particle was stepped too far away (r = " << r <<
" fm)";
151 <<
"Placing it ~2 fm away from the furthermost position tracked "
152 <<
"by intranuclear cascades (r' = " << rmax <<
" fm)";
153 double scale = rmax/r;
203 LOG(
"DISHadronicVtx",
pDEBUG) <<
"K(pt^2) = " <<
fK;
double fct0pion
formation zone (c * formation time) - for pions
TLorentzVector Hadronic4pLAB(GHepRecord *event_rec) const
virtual Interaction * Summary(void) const
const TLorentzVector * P4(void) const
Kinematics * KinePtr(void) const
Defines the EventRecordVisitorI interface. Concrete implementations of this interface use the 'Visito...
void ProcessEventRecord(GHepRecord *event_rec) const
const EventRecordVisitorI * fPreINukeDecayer
double fK
param multiplying pT^2 in formation zone calculation
double Mass(void) const
Mass that corresponds to the PDG code.
~DISHadronicSystemGenerator()
const EventRecordVisitorI * fHadronizationModel
GHepStatus_t Status(void) const
double FormationZone(double m, const TLorentzVector &p, const TVector3 &p3hadr, double ct0, double K)
bool fFilterPreFragmEntries
double fNR
how far beyond the nuclear boundary does the particle tracker goes?
string Name(void) const
Name that corresponds to the PDG code.
Summary information for an interaction.
void SetPosition(const TLorentzVector &v4)
#define LOG(stream, priority)
A macro that returns the requested log4cpp::Category appending a string (using the FILE...
static constexpr double A
void Configure(const Registry &config)
virtual void Configure(const Registry &config)
double fct0nucleon
formation zone (c * formation time) - for nucleons
virtual GHepParticle * TargetNucleus(void) const
DISHadronicSystemGenerator()
virtual GHepParticle * FinalStateHadronicSystem(void) const
void SetW(double W, bool selected=false)
const TLorentzVector * X4(void) const
A registry. Provides the container for algorithm configuration parameters.
void SimulateFormationZone(GHepRecord *event_rec) const
Abstract class. Is used to pass some commonly recurring methods to all concrete implementations of th...
bool GetParamDef(const RgKey &name, T &p, const T &def) const
bool GetParam(const RgKey &name, T &p, bool is_top_call=true) const
void AddFinalHadronicSyst(GHepRecord *event_rec) const
double fR0
param controling nuclear size
GENIE's GHEP MC event record.
static constexpr double m
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.
enum genie::EGHepStatus GHepStatus_t
void PreHadronTransportDecays(GHepRecord *event_rec) const
const Algorithm * SubAlg(const RgKey ®istry_key) const