30 using namespace genie;
56 <<
"Generating kinematics uniformly over the allowed phase space";
73 double xsec_max = this->
MaxXSec(evrec);
80 double dy = ymax-ymin;
86 unsigned int iter = 0;
92 <<
"*** Could not select a valid y after " 93 << iter <<
" iterations";
96 exception.
SetReason(
"Couldn't select kinematics");
101 double y = ymin + dy * rnd->
RndKine().Rndm();
104 LOG(
"GLRESKinematics",
pINFO) <<
"Trying: y = " <<
y;
111 double t = xsec_max * rnd->
RndKine().Rndm();
112 LOG(
"GLRESKinematics",
pDEBUG) <<
"xsec= "<< xsec<<
", J= 1, Rnd= "<<
t;
118 LOG(
"GLRESKinematics",
pINFO) <<
"Selected: y = " <<
y;
147 const double ymin = yl.
min;
148 const double ymax = yl.
max;
150 double max_xsec = -1.0;
152 double dy = (ymax-ymin)/(N-1);
154 for(
int i=0; i<
N; i++) {
155 double y = ymin + i * dy;
159 SLOG(
"GLRESKinematics",
pDEBUG) <<
"xsec(y = " << y <<
") = " << xsec;
160 max_xsec = TMath::Max(xsec, max_xsec);
169 SLOG(
"GLRESKinematics",
pDEBUG) <<
"Max xsec in phase space = " << max_xsec;
virtual double MaxXSec(GHepRecord *evrec) const
const KPhaseSpace & PhaseSpace(void) const
bool fGenerateUniformly
uniform over allowed phase space + event weight?
THE MAIN GENIE PROJECT NAMESPACE
virtual Interaction * Summary(void) const
static RandomGen * Instance()
Access instance.
Kinematics * KinePtr(void) const
double fSafetyFactor
maxxsec -> maxxsec * safety_factor
virtual double XSec(const Interaction *i, KinePhaseSpace_t k=kPSfE) const =0
Compute the cross section for the input interaction.
A simple [min,max] interval for doubles.
virtual void AssertXSecLimits(const Interaction *in, double xsec, double xsec_max) const
double Energy(const Interaction *in) const
double fMaxXSecDiffTolerance
max{100*(xsec-maxxsec)/.5*(xsec+maxxsec)} if xsec>maxxsec
void Configure(const Registry &config)
Defines the EventGeneratorI interface.
double ComputeMaxXSec(const Interaction *in) const
Abstract class. Provides a data caching mechanism for for concrete implementations of the EventRecord...
A singleton holding random number generator classes. All random number generation in GENIE should tak...
Range1D_t Limits(KineVar_t kvar) const
Return the kinematical variable limits.
string AsString(void) const
const XSecAlgorithmI * fXSecModel
Summary information for an interaction.
An exception thrown by EventRecordVisitorI when the normal processing sequence has to be disrupted (f...
#define LOG(stream, priority)
A macro that returns the requested log4cpp::Category appending a string (using the FILE...
virtual void Configure(const Registry &config)
TRandom3 & RndKine(void) const
rnd number generator used by kinematics generators
Misc GENIE control constants.
virtual const XSecAlgorithmI * CrossSectionAlg(void) const =0
GLRESKinematicsGenerator()
static RunningThreadInfo * Instance(void)
void SwitchOnFastForward(void)
void SetReason(string reason)
virtual TBits * EventFlags(void) const
A registry. Provides the container for algorithm configuration parameters.
void Sety(double y, bool selected=false)
const InitialState & InitState(void) const
void ProcessEventRecord(GHepRecord *event_rec) const
void ClearRunningValues(void)
bool GetParamDef(const RgKey &name, T &p, const T &def) const
static const unsigned int kRjMaxIterations
const EventGeneratorI * RunningThread(void)
#define SLOG(stream, priority)
A macro that returns the requested log4cpp::Category appending a short string (using the FUNCTION and...
double ProbeE(RefFrame_t rf) const
GENIE's GHEP MC event record.
Keep info on the event generation thread currently on charge. This is used so that event generation m...
Root of GENIE utility namespaces.
cet::coded_exception< error, detail::translate > exception
~GLRESKinematicsGenerator()
virtual void SetDiffXSec(double xsec, KinePhaseSpace_t ps)
Initial State information.