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;
#define LOG(stream, priority)
A macro that returns the requested log4cpp::Category appending a string (using the FILE,...
Most commonly used PDG codes. A set of utility functions to handle PDG codes is provided in PDGUtils.
bool GetParam(const RgKey &name, T &p, bool is_top_call=true) const
virtual void Configure(const Registry &config)
bool GetParamDef(const RgKey &name, T &p, const T &def) const
const Algorithm * SubAlg(const RgKey ®istry_key) const
double fct0nucleon
formation zone (c * formation time) - for nucleons
DISHadronicSystemGenerator()
double fK
param multiplying pT^2 in formation zone calculation
~DISHadronicSystemGenerator()
void SimulateFormationZone(GHepRecord *event_rec) const
const EventRecordVisitorI * fHadronizationModel
double fNR
how far beyond the nuclear boundary does the particle tracker goes?
double fR0
param controling nuclear size
double fct0pion
formation zone (c * formation time) - for pions
void ProcessEventRecord(GHepRecord *event_rec) const
void Configure(const Registry &config)
bool fFilterPreFragmEntries
Defines the EventRecordVisitorI interface. Concrete implementations of this interface use the 'Visito...
STDHEP-like event record entry that can fit a particle or a nucleus.
string Name(void) const
Name that corresponds to the PDG code.
void SetPosition(const TLorentzVector &v4)
const TLorentzVector * P4(void) const
double Mass(void) const
Mass that corresponds to the PDG code.
const TLorentzVector * X4(void) const
GHepStatus_t Status(void) const
GENIE's GHEP MC event record.
virtual GHepParticle * TargetNucleus(void) const
virtual Interaction * Summary(void) const
virtual GHepParticle * FinalStateHadronicSystem(void) const
void PreHadronTransportDecays(GHepRecord *event_rec) const
void AddFinalHadronicSyst(GHepRecord *event_rec) const
const EventRecordVisitorI * fPreINukeDecayer
TLorentzVector Hadronic4pLAB(GHepRecord *event_rec) const
HadronicSystemGenerator()
Summary information for an interaction.
Kinematics * KinePtr(void) const
void SetW(double W, bool selected=false)
A registry. Provides the container for algorithm configuration parameters.
Misc GENIE control constants.
Simple functions for loading and reading nucleus dependent keys from config files.
double FormationZone(double m, const TLorentzVector &p, const TVector3 &p3hadr, double ct0, double K)
Root of GENIE utility namespaces.
THE MAIN GENIE PROJECT NAMESPACE
enum genie::EGHepStatus GHepStatus_t