35 using namespace genie;
36 using namespace genie::controls;
37 using namespace genie::utils;
61 <<
"Generating kinematics uniformly over the allowed phase space";
85 double dy = ymax-ymin;
91 unsigned int iter = 0;
97 <<
"*** Could not select a valid y after "
98 << iter <<
" iterations";
101 exception.
SetReason(
"Couldn't select kinematics");
106 double y = ymin + dy * rnd->
RndKine().Rndm();
109 LOG(
"DMEKinematics",
pINFO) <<
"Trying: y = " << y;
118 double t = xsec_max * rnd->
RndKine().Rndm();
119 LOG(
"DMEKinematics",
pDEBUG) <<
"xsec= "<< xsec<<
", J= 1, Rnd= "<< t;
128 LOG(
"DMEKinematics",
pINFO) <<
"Selected: y = " << y;
137 double totxsec = evrec->
XSec();
138 double wght = (vol/totxsec)*xsec;
139 LOG(
"DMEKinematics",
pNOTICE) <<
"Kinematics wght = "<< wght;
143 LOG(
"DMEKinematics",
pNOTICE) <<
"Current event wght = " << wght;
172 const double ymin = yl.
min;
173 const double ymax = yl.
max;
175 double max_xsec = -1.0;
177 double dy = (ymax-ymin)/(N-1);
181 for(
int i=0; i<N; i++) {
182 double y = ymin + i * dy;
186 SLOG(
"DMEKinematics",
pDEBUG) <<
"xsec(y = " << y <<
") = " << xsec;
187 max_xsec = TMath::Max(xsec, max_xsec);
215 SLOG(
"DMEKinematics",
pDEBUG) <<
"Max xsec in phase space = " << max_xsec;
const KPhaseSpace & PhaseSpace(void) const
virtual void SetWeight(double wght)
bool fGenerateUniformly
uniform over allowed phase space + event weight?
virtual Interaction * Summary(void) const
static RandomGen * Instance()
Access instance.
Kinematics * KinePtr(void) const
double fSafetyFactor
ComputeMaxXSec -> ComputeMaxXSec * fSafetyFactor.
A simple [min,max] interval for doubles.
virtual void AssertXSecLimits(const Interaction *in, double xsec, double xsec_max) const
double fMaxXSecDiffTolerance
max{100*(xsec-maxxsec)/.5*(xsec+maxxsec)} if xsec>maxxsec
Defines the EventGeneratorI interface.
virtual double MaxXSec(GHepRecord *evrec, const int nkey=0) const
virtual double Weight(void) 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
double PhaseSpaceVolume(const Interaction *const i, KinePhaseSpace_t ps)
double Energy(const Interaction *in) const
Summary information for an interaction.
An exception thrown by EventRecordVisitorI when the normal processing sequence has to be disrupted (f...
double ComputeMaxXSec(const Interaction *in) const
#define LOG(stream, priority)
A macro that returns the requested log4cpp::Category appending a string (using the FILE...
void ProcessEventRecord(GHepRecord *event_rec) const
virtual void Configure(const Registry &config)
TRandom3 & RndKine(void) const
rnd number generator used by kinematics generators
virtual double XSec(const Interaction *i, KinePhaseSpace_t k=kPSfE) const =0
Compute the cross section for the input interaction.
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)
double fEMin
min E for which maxxsec is cached - forcing explicit calc.
virtual const XSecAlgorithmI * CrossSectionAlg(void) const =0
~DMEKinematicsGenerator()
virtual double XSec(void) const
const InitialState & InitState(void) const
void ClearRunningValues(void)
bool GetParamDef(const RgKey &name, T &p, const T &def) const
void Configure(const Registry &config)
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...
virtual void SetDiffXSec(double xsec, KinePhaseSpace_t ps)
Initial State information.