18 #include <TLorentzVector.h>
42 using namespace genie;
43 using namespace genie::constants;
69 <<
"No nuclear target found - The Pauli Blocker exits";
78 LOG(
"PauliBlock",
pINFO) <<
"Not a QEL event - The Pauli Blocker exits";
89 int nuc_pdgc = recoil->
Pdg();
92 double radius = hit->
X4()->Vect().Mag();
95 LOG(
"PauliBlock",
pINFO) <<
"KF = " << kf;
98 double p = recoil->
P4()->P();
99 LOG(
"PauliBlock",
pINFO) <<
"Recoil nucleon |P| = " << p;
102 bool is_blocked = (p < kf);
107 <<
" *** The generated event is Pauli-blocked ("
108 <<
"|p_{nucleon}| = " << p <<
" GeV < Fermi momentum = " << kf <<
" GeV) ***";
112 exception.
SetReason(
"Pauli-blocked event");
147 RgKey nuclkey =
"NuclearModel";
177 int numNuc = (is_p) ? tgt.
Z() : tgt.
N();
179 kF = TMath::Power(3 *
kPi2 * numNuc *
virtual GHepParticle * Particle(int position) const
static constexpr double hbarc
virtual Interaction * Summary(void) const
const TLorentzVector * P4(void) const
Defines the EventRecordVisitorI interface. Concrete implementations of this interface use the 'Visito...
double Density(double r, int A, double ring=0.)
int FirstDaughter(void) const
bool IsQuasiElastic(void) const
A singleton class holding all configuration registries built while parsing all loaded XML configurati...
static FermiMomentumTablePool * Instance(void)
Pure abstract base class. Defines the NuclearModelI interface to be implemented by any physics model ...
void Configure(const Registry &config)
virtual NuclearModel_t ModelType(const Target &) const =0
Summary information for an interaction.
double GetFermiMomentum(const Target &tgt, int pdg_Nf, double radius=0.0) const
Get the Fermi momentum needed to check Pauli blocking.
An exception thrown by EventRecordVisitorI when the normal processing sequence has to be disrupted (f...
Singleton class to load & serve tables of Fermi momentum constants.
#define LOG(stream, priority)
A macro that returns the requested log4cpp::Category appending a string (using the FILE...
static constexpr double A
const FermiMomentumTable * GetTable(string name)
A class encapsulating an enumeration of interaction types (EM, Weak-CC, Weak-NC) and scattering types...
A Neutrino Interaction Target. Is a transparent encapsulation of quite different physical systems suc...
virtual void Configure(const Registry &config)
const Algorithm * GetAlgorithm(const AlgId &algid)
virtual GHepParticle * TargetNucleus(void) const
bool IsDarkMatterElastic(void) const
Registry * GlobalParameterList(void) const
static const double kLightSpeed
void SetReturnStep(int s)
void SwitchOnFastForward(void)
void SetReason(string reason)
virtual TBits * EventFlags(void) const
static AlgFactory * Instance()
const TLorentzVector * X4(void) const
A registry. Provides the container for algorithm configuration parameters.
virtual GHepParticle * HitNucleon(void) const
const FermiMomentumTable * fKFTable
void SwitchOnStepBack(void)
static constexpr double fermi
const InitialState & InitState(void) const
const ProcessInfo & ProcInfo(void) const
void ProcessEventRecord(GHepRecord *event_rec) const
double FindClosestKF(int target_pdgc, int nucleon_pdgc) const
bool GetParam(const RgKey &name, T &p, bool is_top_call=true) const
const Target & Tgt(void) const
The GENIE Algorithm Factory.
static const double kPlankConstant
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.
RgAlg GetAlg(RgKey key) const
static AlgConfigPool * Instance()