GENIEGenerator
Loading...
Searching...
No Matches
genie::KineGeneratorWithCache Class Referenceabstract

Abstract class. Provides a data caching mechanism for for concrete implementations of the EventRecordVisitorI interface, generating kinematics and wishing to cache maximum differential xsecs. More...

#include <KineGeneratorWithCache.h>

Inheritance diagram for genie::KineGeneratorWithCache:
[legend]
Collaboration diagram for genie::KineGeneratorWithCache:
[legend]

Protected Member Functions

 KineGeneratorWithCache ()
 KineGeneratorWithCache (string name)
 KineGeneratorWithCache (string name, string config)
 ~KineGeneratorWithCache ()
virtual double ComputeMaxXSec (const Interaction *in) const =0
virtual double ComputeMaxXSec (const Interaction *in, const int nkey) const
virtual double MaxXSec (GHepRecord *evrec, const int nkey=0) const
virtual double FindMaxXSec (const Interaction *in, const int nkey=0) const
virtual void CacheMaxXSec (const Interaction *in, double xsec, const int nkey=0) const
virtual double Energy (const Interaction *in) const
virtual CacheBranchFxAccessCacheBranch (const Interaction *in, const int nkey=0) const
virtual void AssertXSecLimits (const Interaction *in, double xsec, double xsec_max) const
Protected Member Functions inherited from genie::EventRecordVisitorI
 EventRecordVisitorI ()
 EventRecordVisitorI (string name)
 EventRecordVisitorI (string name, string config)
Protected Member Functions inherited from genie::Algorithm
 Algorithm ()
 Algorithm (string name)
 Algorithm (string name, string config)
void Initialize (void)
void DeleteConfig (void)
void DeleteSubstructure (void)
RegistryExtractLocalConfig (const Registry &in) const
RegistryExtractLowerConfig (const Registry &in, const string &alg_key) const
 Split an incoming configuration Registry into a block valid for the sub-algo identified by alg_key.
template<class T>
bool GetParam (const RgKey &name, T &p, bool is_top_call=true) const
template<class T>
bool GetParamDef (const RgKey &name, T &p, const T &def) const
template<class T>
int GetParamVect (const std::string &comm_name, std::vector< T > &v, bool is_top_call=true) const
 Handle to load vectors of parameters.
int GetParamVectKeys (const std::string &comm_name, std::vector< RgKey > &k, bool is_top_call=true) const
template<class T>
int GetParamMat (const std::string &comm_name, TMatrixT< T > &mat, bool is_top_call=true) const
 Handle to load matrix of parameters.
template<class T>
int GetParamMatSym (const std::string &comm_name, TMatrixTSym< T > &mat, bool is_top_call=true) const
int GetParamMatKeys (const std::string &comm_name, std::vector< RgKey > &k, bool is_top_call=true) const
int AddTopRegistry (Registry *rp, bool owns=true)
 add registry with top priority, also update ownership
int AddLowRegistry (Registry *rp, bool owns=true)
 add registry with lowest priority, also update ownership
int MergeTopRegistry (const Registry &r)
int AddTopRegisties (const vector< Registry * > &rs, bool owns=false)
 Add registries with top priority, also udated Ownerships.

Protected Attributes

const XSecAlgorithmIfXSecModel
double fSafetyFactor
 ComputeMaxXSec -> ComputeMaxXSec * fSafetyFactor.
std::vector< double > vSafetyFactors
 MaxXSec -> MaxXSec * fSafetyFactors[nkey].
int fNumOfSafetyFactors
 Number of given safety factors.
std::vector< string > vInterpolatorTypes
 Type of interpolator for each key in a branch.
int fNumOfInterpolatorTypes
 Number of given interpolators types.
double fMaxXSecDiffTolerance
 max{100*(xsec-maxxsec)/.5*(xsec+maxxsec)} if xsec>maxxsec
double fEMin
 min E for which maxxsec is cached - forcing explicit calc.
bool fGenerateUniformly
 uniform over allowed phase space + event weight?
Protected Attributes inherited from genie::Algorithm
bool fAllowReconfig
bool fOwnsSubstruc
 true if it owns its substructure (sub-algs,...)
AlgId fID
 algorithm name and configuration set
vector< Registry * > fConfVect
vector< bool > fOwnerships
 ownership for every registry in fConfVect
AlgStatus_t fStatus
 algorithm execution status
AlgMapfOwnedSubAlgMp
 local pool for owned sub-algs (taken out of the factory pool)

Additional Inherited Members

Public Member Functions inherited from genie::EventRecordVisitorI
virtual ~EventRecordVisitorI ()
virtual void ProcessEventRecord (GHepRecord *event_rec) const =0
Public Member Functions inherited from genie::Algorithm
virtual ~Algorithm ()
virtual void Configure (const Registry &config)
virtual void Configure (string config)
virtual void FindConfig (void)
virtual const RegistryGetConfig (void) const
RegistryGetOwnedConfig (void)
virtual const AlgIdId (void) const
 Get algorithm ID.
virtual AlgStatus_t GetStatus (void) const
 Get algorithm status.
virtual bool AllowReconfig (void) const
virtual AlgCmp_t Compare (const Algorithm *alg) const
 Compare with input algorithm.
virtual void SetId (const AlgId &id)
 Set algorithm ID.
virtual void SetId (string name, string config)
const AlgorithmSubAlg (const RgKey &registry_key) const
void AdoptConfig (void)
void AdoptSubstructure (void)
virtual void Print (ostream &stream) const
 Print algorithm info.
Static Public Member Functions inherited from genie::Algorithm
static string BuildParamVectKey (const std::string &comm_name, unsigned int i)
static string BuildParamVectSizeKey (const std::string &comm_name)
static string BuildParamMatKey (const std::string &comm_name, unsigned int i, unsigned int j)
static string BuildParamMatRowSizeKey (const std::string &comm_name)
static string BuildParamMatColSizeKey (const std::string &comm_name)

Detailed Description

Abstract class. Provides a data caching mechanism for for concrete implementations of the EventRecordVisitorI interface, generating kinematics and wishing to cache maximum differential xsecs.

This class provides some common implementation for handling (retrieving, creating, searching, adding to) the cache. The various super-classes should implement the ComputeMaxXSec(...) method for computing the maximum xsec in case it has not already being pushed into the cache at a previous iteration.
Update May 15, 2022 IK: It makes possible to cache several values having different keys. The example of using this opportunity see in the class QELEventGeneratorSM.

Author
Costas Andreopoulos <c.andreopoulos \at cern.ch> University of Liverpool
Igor Kakorin kakor.nosp@m.in@j.nosp@m.inr.r.nosp@m.u Joint Institute for Nuclear Research
Created:\n December 15, 2004
License:\n Copyright (c) 2003-2025, The GENIE Collaboration
For the full text of the license visit http://copyright.genie-mc.org

Definition at line 49 of file KineGeneratorWithCache.h.

Constructor & Destructor Documentation

◆ KineGeneratorWithCache() [1/3]

KineGeneratorWithCache::KineGeneratorWithCache ( )
protected

Definition at line 34 of file KineGeneratorWithCache.cxx.

34 :
36{
37
38}
double fSafetyFactor
ComputeMaxXSec -> ComputeMaxXSec * fSafetyFactor.
int fNumOfInterpolatorTypes
Number of given interpolators types.
int fNumOfSafetyFactors
Number of given safety factors.

References genie::EventRecordVisitorI::EventRecordVisitorI(), fNumOfInterpolatorTypes, fNumOfSafetyFactors, and fSafetyFactor.

Referenced by genie::COHKinematicsGenerator::COHKinematicsGenerator(), genie::COHKinematicsGenerator::COHKinematicsGenerator(), genie::DFRKinematicsGenerator::DFRKinematicsGenerator(), genie::DFRKinematicsGenerator::DFRKinematicsGenerator(), genie::DISKinematicsGenerator::DISKinematicsGenerator(), genie::DISKinematicsGenerator::DISKinematicsGenerator(), genie::DMDISKinematicsGenerator::DMDISKinematicsGenerator(), genie::DMDISKinematicsGenerator::DMDISKinematicsGenerator(), genie::DMEKinematicsGenerator::DMEKinematicsGenerator(), genie::DMEKinematicsGenerator::DMEKinematicsGenerator(), genie::DMELEventGenerator::DMELEventGenerator(), genie::DMELEventGenerator::DMELEventGenerator(), genie::DMELKinematicsGenerator::DMELKinematicsGenerator(), genie::DMELKinematicsGenerator::DMELKinematicsGenerator(), genie::HEDISKinematicsGenerator::HEDISKinematicsGenerator(), genie::HEDISKinematicsGenerator::HEDISKinematicsGenerator(), genie::HELeptonKinematicsGenerator::HELeptonKinematicsGenerator(), genie::HELeptonKinematicsGenerator::HELeptonKinematicsGenerator(), genie::IBDKinematicsGenerator::IBDKinematicsGenerator(), genie::IBDKinematicsGenerator::IBDKinematicsGenerator(), genie::NuEKinematicsGenerator::NuEKinematicsGenerator(), genie::NuEKinematicsGenerator::NuEKinematicsGenerator(), genie::QELEventGenerator::QELEventGenerator(), genie::QELEventGenerator::QELEventGenerator(), genie::QELEventGeneratorSM::QELEventGeneratorSM(), genie::QELEventGeneratorSM::QELEventGeneratorSM(), genie::QELEventGeneratorSuSA::QELEventGeneratorSuSA(), genie::QELEventGeneratorSuSA::QELEventGeneratorSuSA(), genie::QELKinematicsGenerator::QELKinematicsGenerator(), genie::QELKinematicsGenerator::QELKinematicsGenerator(), genie::RESKinematicsGenerator::RESKinematicsGenerator(), genie::RESKinematicsGenerator::RESKinematicsGenerator(), genie::SKKinematicsGenerator::SKKinematicsGenerator(), genie::SKKinematicsGenerator::SKKinematicsGenerator(), genie::SPPEventGenerator::SPPEventGenerator(), and genie::SPPEventGenerator::SPPEventGenerator().

◆ KineGeneratorWithCache() [2/3]

KineGeneratorWithCache::KineGeneratorWithCache ( string name)
protected

◆ KineGeneratorWithCache() [3/3]

KineGeneratorWithCache::KineGeneratorWithCache ( string name,
string config )
protected

◆ ~KineGeneratorWithCache()

KineGeneratorWithCache::~KineGeneratorWithCache ( )
protected

Definition at line 52 of file KineGeneratorWithCache.cxx.

53{
54
55}

Member Function Documentation

◆ AccessCacheBranch()

CacheBranchFx * KineGeneratorWithCache::AccessCacheBranch ( const Interaction * in,
const int nkey = 0 ) const
protectedvirtual

Definition at line 224 of file KineGeneratorWithCache.cxx.

226{
227// Returns the cache branch for this algorithm and this interaction. If no
228// branch is found then one is created.
229
230 Cache * cache = Cache::Instance();
231
232 // build the cache branch key as: namespace::algorithm/config/interaction/nkey
233 string algkey = this->Id().Key();
234 string intkey = interaction->AsString();
235 string key = cache->CacheBranchKey(algkey, intkey, std::to_string(nkey));
236
237 CacheBranchFx * cache_branch =
238 dynamic_cast<CacheBranchFx *> (cache->FindCacheBranch(key));
239 if(!cache_branch) {
240 //-- create the cache branch at the first pass
241 LOG("Kinematics", pINFO) << "No cache branch found";
242 LOG("Kinematics", pINFO) << "Creating cache branch - key = " << key;
243
244 cache_branch = new CacheBranchFx("Max over phase space");
245 cache->AddCacheBranch(key, cache_branch);
246 }
247 assert(cache_branch);
248
249 return cache_branch;
250}
#define pINFO
Definition Messenger.h:62
#define LOG(stream, priority)
A macro that returns the requested log4cpp::Category appending a string (using the FILE,...
Definition Messenger.h:96
string Key(void) const
Definition AlgId.h:46
virtual const AlgId & Id(void) const
Get algorithm ID.
Definition Algorithm.h:98
string CacheBranchKey(string k0, string k1="", string k2="") const
Definition Cache.cxx:93
void AddCacheBranch(string key, CacheBranchI *branch)
Definition Cache.cxx:88
static Cache * Instance(void)
Definition Cache.cxx:67
CacheBranchI * FindCacheBranch(string key)
finding/adding cache branches
Definition Cache.cxx:80

References genie::Cache::AddCacheBranch(), genie::Interaction::AsString(), genie::Cache::CacheBranchKey(), genie::Cache::FindCacheBranch(), genie::Algorithm::Id(), genie::Cache::Instance(), genie::AlgId::Key(), LOG, and pINFO.

Referenced by CacheMaxXSec(), and FindMaxXSec().

◆ AssertXSecLimits()

void KineGeneratorWithCache::AssertXSecLimits ( const Interaction * in,
double xsec,
double xsec_max ) const
protectedvirtual

Definition at line 252 of file KineGeneratorWithCache.cxx.

254{
255 // check the computed cross section for the current kinematics against the
256 // maximum cross section used in the rejection MC method for the current
257 // interaction at the current energy.
258 if(xsec>xsec_max) {
259 double f = 200*(xsec-xsec_max)/(xsec_max+xsec);
261 LOG("Kinematics", pFATAL)
262 << "xsec: (curr) = " << xsec
263 << " > (max) = " << xsec_max << "\n for " << *interaction;
264 LOG("Kinematics", pFATAL)
265 << "*** Exceeding estimated maximum differential cross section";
266 std::terminate();
267 } else {
268 LOG("Kinematics", pWARN)
269 << "xsec: (curr) = " << xsec
270 << " > (max) = " << xsec_max << "\n for " << *interaction;
271 LOG("Kinematics", pWARN)
272 << "*** The fractional deviation of " << f << " % was allowed";
273 }
274 }
275
276 // this should never happen - print an error mesg just in case...
277 if(xsec<0) {
278 LOG("Kinematics", pERROR)
279 << "Negative cross section for current kinematics!! \n" << *interaction;
280 }
281}
#define pERROR
Definition Messenger.h:59
#define pFATAL
Definition Messenger.h:56
#define pWARN
Definition Messenger.h:60
double fMaxXSecDiffTolerance
max{100*(xsec-maxxsec)/.5*(xsec+maxxsec)} if xsec>maxxsec

References fMaxXSecDiffTolerance, LOG, pERROR, pFATAL, and pWARN.

Referenced by genie::COHKinematicsGenerator::CalculateKin_AlvarezRuso(), genie::SKKinematicsGenerator::CalculateKin_AtharSingleKaon(), genie::COHKinematicsGenerator::CalculateKin_ReinSehgal(), genie::DFRKinematicsGenerator::ProcessEventRecord(), genie::DISKinematicsGenerator::ProcessEventRecord(), genie::DMDISKinematicsGenerator::ProcessEventRecord(), genie::DMEKinematicsGenerator::ProcessEventRecord(), genie::DMELEventGenerator::ProcessEventRecord(), genie::DMELKinematicsGenerator::ProcessEventRecord(), genie::HEDISKinematicsGenerator::ProcessEventRecord(), genie::HELeptonKinematicsGenerator::ProcessEventRecord(), genie::IBDKinematicsGenerator::ProcessEventRecord(), genie::NuEKinematicsGenerator::ProcessEventRecord(), genie::QELEventGenerator::ProcessEventRecord(), genie::QELEventGeneratorSM::ProcessEventRecord(), genie::QELKinematicsGenerator::ProcessEventRecord(), genie::RESKinematicsGenerator::ProcessEventRecord(), genie::SPPEventGenerator::ProcessEventRecord(), genie::QELEventGeneratorSuSA::SelectLeptonKinematics(), genie::DMELKinematicsGenerator::SpectralFuncExperimentalCode(), and genie::QELKinematicsGenerator::SpectralFuncExperimentalCode().

◆ CacheMaxXSec()

void KineGeneratorWithCache::CacheMaxXSec ( const Interaction * in,
double xsec,
const int nkey = 0 ) const
protectedvirtual

Definition at line 190 of file KineGeneratorWithCache.cxx.

192{
193 LOG("Kinematics", pINFO)
194 << "Adding the computed max value to cache";
195 CacheBranchFx * cb = this->AccessCacheBranch(interaction, nkey);
196
197 double E = this->Energy(interaction);
198 if (E<fEMin) return;
199 if(max_xsec>0) cb->AddValues(E,max_xsec);
200
201 if(! cb->Spl() ) {
202 if( cb->Map().size() > 40 )
204 }
205
206 if( cb->Spl() ) {
207 if( E < cb->Spl()->XMin() || E > cb->Spl()->XMax() ) {
209 }
210 }
211}
void CreateSpline(string type="TSpline3")
Spline * Spl(void) const
void AddValues(double x, double y)
const map< double, double > & Map(void) const
std::vector< string > vInterpolatorTypes
Type of interpolator for each key in a branch.
double fEMin
min E for which maxxsec is cached - forcing explicit calc.
virtual double Energy(const Interaction *in) const
virtual CacheBranchFx * AccessCacheBranch(const Interaction *in, const int nkey=0) const
double XMax(void) const
Definition Spline.h:89

References AccessCacheBranch(), genie::CacheBranchFx::AddValues(), genie::CacheBranchFx::CreateSpline(), Energy(), fEMin, fNumOfInterpolatorTypes, LOG, genie::CacheBranchFx::Map(), pINFO, genie::CacheBranchFx::Spl(), vInterpolatorTypes, and genie::Spline::XMax().

Referenced by MaxXSec().

◆ ComputeMaxXSec() [1/2]

◆ ComputeMaxXSec() [2/2]

double KineGeneratorWithCache::ComputeMaxXSec ( const Interaction * in,
const int nkey ) const
protectedvirtual

Reimplemented in genie::QELEventGeneratorSM.

Definition at line 283 of file KineGeneratorWithCache.cxx.

284{
285 if (nkey == 0)
286 {
287 return this->ComputeMaxXSec(in);
288 }
289 else
290 {
291 return -1;
292 }
293}
virtual double ComputeMaxXSec(const Interaction *in) const =0

References ComputeMaxXSec().

◆ Energy()

double KineGeneratorWithCache::Energy ( const Interaction * in) const
protectedvirtual

Reimplemented in genie::COHKinematicsGenerator, genie::DMEKinematicsGenerator, genie::HELeptonKinematicsGenerator, genie::NuEKinematicsGenerator, and genie::SKKinematicsGenerator.

Definition at line 213 of file KineGeneratorWithCache.cxx.

214{
215// Returns the neutrino energy at the struck nucleon rest frame. Kinematic
216// generators should override this method if they need to cache the max-xsec
217// values for another energy value (eg kinematic generators for IMD or COH)
218
219 const InitialState & init_state = interaction->InitState();
220 double E = init_state.ProbeE(kRfHitNucRest);
221 return E;
222}
double ProbeE(RefFrame_t rf) const
@ kRfHitNucRest
Definition RefFrame.h:30

References genie::Interaction::InitState(), genie::kRfHitNucRest, and genie::InitialState::ProbeE().

Referenced by CacheMaxXSec(), and FindMaxXSec().

◆ FindMaxXSec()

double KineGeneratorWithCache::FindMaxXSec ( const Interaction * in,
const int nkey = 0 ) const
protectedvirtual

Definition at line 105 of file KineGeneratorWithCache.cxx.

107{
108// Find a cached max xsec for the specified xsec algorithm & interaction and
109// close to the specified energy
110
111 // get neutrino energy
112 double E = this->Energy(interaction);
113 LOG("Kinematics", pINFO) << "E = " << E;
114
115 if(E < fEMin) {
116 LOG("Kinematics", pINFO)
117 << "Below minimum energy - Forcing explicit calculation";
118 return -1.;
119 }
120
121 // access the the cache branch
122 CacheBranchFx * cb = this->AccessCacheBranch(interaction, nkey);
123
124 // if there are enough points stored in the cache buffer to build a
125 // spline, then intepolate
126 if( cb->Spl() ) {
127 if( E >= cb->Spl()->XMin() && E <= cb->Spl()->XMax()) {
128 double spl_max_xsec = cb->Spl()->Evaluate(E);
129 LOG("Kinematics", pINFO)
130 << "\nInterpolated: max (E=" << E << ") = " << spl_max_xsec;
131 return spl_max_xsec;
132 }
133 LOG("Kinematics", pINFO)
134 << "Outside spline boundaries - Forcing explicit calculation";
135 return -1.;
136 }
137
138 // if there are not enough points at the cache buffer to have a spline,
139 // look whether there is another point that is sufficiently close
140 double dE = TMath::Min(0.25, 0.05*E);
141 const map<double,double> & fmap = cb->Map();
142 map<double,double>::const_iterator iter = fmap.lower_bound(E);
143 if(iter != fmap.end()) {
144 if(TMath::Abs(E - iter->first) < dE) return iter->second;
145 }
146
147 return -1;
148
149/*
150 // build the search rule
151 double dE = TMath::Min(0.25, 0.05*E);
152 ostringstream search;
153 search << "(x-" << E << " < " << dE << ") && (x>=" << E << ")";
154
155 // query for all the entries at a window around the current energy
156 TSQLResult * result = cb->Ntuple()->Query("x:y", search.str().c_str());
157 int nrows = result->GetRowCount();
158 LOG("Kinematics", pDEBUG)
159 << "Found " << nrows << " rows with " << search.str();
160 if(nrows <= 0) {
161 delete result;
162 return -1;
163 }
164
165 // and now select the entry with the closest energy
166 double max_xsec = -1.0;
167 double Ep = 0;
168 double dEmin = 999;
169 TSQLRow * row = 0;
170 while( (row = result->Next()) ) {
171 double cE = atof( row->GetField(0) );
172 double cxsec = atof( row->GetField(1) );
173 double dE = TMath::Abs(E-cE);
174 if(dE < dEmin) {
175 max_xsec = cxsec;
176 Ep = cE;
177 dEmin = TMath::Min(dE,dEmin);
178 }
179 delete row;
180 }
181 delete result;
182
183 LOG("Kinematics", pINFO)
184 << "\nRetrieved: max xsec = " << max_xsec << " cached at E = " << Ep;
185
186 return max_xsec;
187*/
188}
double Evaluate(double x) const
Definition Spline.cxx:363
double XMin(void) const
Definition Spline.h:88

References AccessCacheBranch(), Energy(), genie::Spline::Evaluate(), fEMin, LOG, genie::CacheBranchFx::Map(), pINFO, genie::CacheBranchFx::Spl(), and genie::Spline::XMin().

Referenced by MaxXSec().

◆ MaxXSec()

double KineGeneratorWithCache::MaxXSec ( GHepRecord * evrec,
const int nkey = 0 ) const
protectedvirtual

Definition at line 57 of file KineGeneratorWithCache.cxx.

58{
59 LOG("Kinematics", pINFO)
60 << "Getting max. for the rejection method";
61
62 double xsec_max = -1;
63 Interaction * interaction = event_rec->Summary();
64
65 LOG("Kinematics", pINFO)
66 << "Attempting to find a cached max value";
67 xsec_max = this->FindMaxXSec(interaction, nkey);
68 if(xsec_max>0) return nkey<=fNumOfSafetyFactors-1?vSafetyFactors[nkey]*xsec_max:xsec_max;
69
70 LOG("Kinematics", pINFO)
71 << "Attempting to compute the max value";
72 if (nkey == 0)
73 {
74 xsec_max = this->ComputeMaxXSec(interaction);
75 }
76 else
77 {
78 xsec_max = this->ComputeMaxXSec(interaction, nkey);
79 }
80
81 if(xsec_max>0) {
82 LOG("Kinematics", pINFO) << "max = " << xsec_max;
83 this->CacheMaxXSec(interaction, xsec_max, nkey);
84 return nkey<=fNumOfSafetyFactors-1?vSafetyFactors[nkey]*xsec_max:xsec_max;
85 }
86
87 LOG("Kinematics", pNOTICE)
88 << "Can not generate event kinematics max_xsec<=0)";
89 // xsec for selected kinematics = 0
90 event_rec->SetDiffXSec(0,kPSNull);
91 // switch on error flag
92 event_rec->EventFlags()->SetBitNumber(kKineGenErr, true);
93 // reset 'trust' bits
94 interaction->ResetBit(kISkipProcessChk);
95 interaction->ResetBit(kISkipKinematicChk);
96 // throw exception
97 genie::exceptions::EVGThreadException exception;
98 exception.SetReason("kinematics generation: max_xsec<=0");
99 exception.SwitchOnFastForward();
100 throw exception;
101
102 return 0;
103}
#define pNOTICE
Definition Messenger.h:61
std::vector< double > vSafetyFactors
MaxXSec -> MaxXSec * fSafetyFactors[nkey].
virtual double FindMaxXSec(const Interaction *in, const int nkey=0) const
virtual void CacheMaxXSec(const Interaction *in, double xsec, const int nkey=0) const
const UInt_t kISkipKinematicChk
if set, skip kinematic validity checks
Definition Interaction.h:48
const UInt_t kISkipProcessChk
if set, skip process validity checks
Definition Interaction.h:47
@ kKineGenErr
Definition GHepFlags.h:31

References CacheMaxXSec(), ComputeMaxXSec(), genie::GHepRecord::EventFlags(), FindMaxXSec(), fNumOfSafetyFactors, genie::kISkipKinematicChk, genie::kISkipProcessChk, genie::kKineGenErr, genie::kPSNull, LOG, pINFO, pNOTICE, genie::GHepRecord::SetDiffXSec(), genie::exceptions::EVGThreadException::SetReason(), genie::GHepRecord::Summary(), genie::exceptions::EVGThreadException::SwitchOnFastForward(), and vSafetyFactors.

Referenced by genie::COHKinematicsGenerator::CalculateKin_AlvarezRuso(), genie::SKKinematicsGenerator::CalculateKin_AtharSingleKaon(), genie::COHKinematicsGenerator::CalculateKin_BergerSehgal(), genie::COHKinematicsGenerator::CalculateKin_BergerSehgalFM(), genie::COHKinematicsGenerator::CalculateKin_ReinSehgal(), genie::DFRKinematicsGenerator::ProcessEventRecord(), genie::DISKinematicsGenerator::ProcessEventRecord(), genie::DMDISKinematicsGenerator::ProcessEventRecord(), genie::DMEKinematicsGenerator::ProcessEventRecord(), genie::DMELEventGenerator::ProcessEventRecord(), genie::DMELKinematicsGenerator::ProcessEventRecord(), genie::HELeptonKinematicsGenerator::ProcessEventRecord(), genie::IBDKinematicsGenerator::ProcessEventRecord(), genie::NuEKinematicsGenerator::ProcessEventRecord(), genie::QELEventGenerator::ProcessEventRecord(), genie::QELEventGeneratorSM::ProcessEventRecord(), genie::QELKinematicsGenerator::ProcessEventRecord(), genie::RESKinematicsGenerator::ProcessEventRecord(), genie::SPPEventGenerator::ProcessEventRecord(), genie::QELEventGeneratorSuSA::SelectLeptonKinematics(), genie::DMELKinematicsGenerator::SpectralFuncExperimentalCode(), and genie::QELKinematicsGenerator::SpectralFuncExperimentalCode().

Member Data Documentation

◆ fEMin

◆ fGenerateUniformly

bool genie::KineGeneratorWithCache::fGenerateUniformly
protected

uniform over allowed phase space + event weight?

Definition at line 77 of file KineGeneratorWithCache.h.

Referenced by genie::COHKinematicsGenerator::CalculateKin_AlvarezRuso(), genie::SKKinematicsGenerator::CalculateKin_AtharSingleKaon(), genie::COHKinematicsGenerator::CalculateKin_ReinSehgal(), genie::COHKinematicsGenerator::LoadConfig(), genie::DFRKinematicsGenerator::LoadConfig(), genie::DISKinematicsGenerator::LoadConfig(), genie::DMDISKinematicsGenerator::LoadConfig(), genie::DMEKinematicsGenerator::LoadConfig(), genie::DMELEventGenerator::LoadConfig(), genie::DMELKinematicsGenerator::LoadConfig(), genie::IBDKinematicsGenerator::LoadConfig(), genie::NuEKinematicsGenerator::LoadConfig(), genie::QELEventGenerator::LoadConfig(), genie::QELEventGeneratorSM::LoadConfig(), genie::QELEventGeneratorSuSA::LoadConfig(), genie::QELKinematicsGenerator::LoadConfig(), genie::RESKinematicsGenerator::LoadConfig(), genie::SKKinematicsGenerator::LoadConfig(), genie::SPPEventGenerator::LoadConfig(), genie::COHKinematicsGenerator::ProcessEventRecord(), genie::DFRKinematicsGenerator::ProcessEventRecord(), genie::DISKinematicsGenerator::ProcessEventRecord(), genie::DMDISKinematicsGenerator::ProcessEventRecord(), genie::DMEKinematicsGenerator::ProcessEventRecord(), genie::DMELEventGenerator::ProcessEventRecord(), genie::DMELKinematicsGenerator::ProcessEventRecord(), genie::HELeptonKinematicsGenerator::ProcessEventRecord(), genie::IBDKinematicsGenerator::ProcessEventRecord(), genie::NuEKinematicsGenerator::ProcessEventRecord(), genie::QELEventGenerator::ProcessEventRecord(), genie::QELEventGeneratorSM::ProcessEventRecord(), genie::QELKinematicsGenerator::ProcessEventRecord(), genie::RESKinematicsGenerator::ProcessEventRecord(), genie::SKKinematicsGenerator::ProcessEventRecord(), and genie::SPPEventGenerator::ProcessEventRecord().

◆ fMaxXSecDiffTolerance

◆ fNumOfInterpolatorTypes

int genie::KineGeneratorWithCache::fNumOfInterpolatorTypes
protected

◆ fNumOfSafetyFactors

int genie::KineGeneratorWithCache::fNumOfSafetyFactors
protected

◆ fSafetyFactor

double genie::KineGeneratorWithCache::fSafetyFactor
protected

ComputeMaxXSec -> ComputeMaxXSec * fSafetyFactor.

Definition at line 70 of file KineGeneratorWithCache.h.

Referenced by genie::COHKinematicsGenerator::ComputeMaxXSec(), genie::DMEKinematicsGenerator::ComputeMaxXSec(), genie::DMELEventGenerator::ComputeMaxXSec(), genie::DMELKinematicsGenerator::ComputeMaxXSec(), genie::HELeptonKinematicsGenerator::ComputeMaxXSec(), genie::IBDKinematicsGenerator::ComputeMaxXSec(), genie::NuEKinematicsGenerator::ComputeMaxXSec(), genie::QELEventGenerator::ComputeMaxXSec(), genie::QELEventGeneratorSuSA::ComputeMaxXSec(), genie::QELKinematicsGenerator::ComputeMaxXSec(), genie::RESKinematicsGenerator::ComputeMaxXSec(), genie::SKKinematicsGenerator::ComputeMaxXSec(), genie::SPPEventGenerator::ComputeMaxXSec(), KineGeneratorWithCache(), KineGeneratorWithCache(), KineGeneratorWithCache(), genie::COHKinematicsGenerator::LoadConfig(), genie::DFRKinematicsGenerator::LoadConfig(), genie::DISKinematicsGenerator::LoadConfig(), genie::DMDISKinematicsGenerator::LoadConfig(), genie::DMEKinematicsGenerator::LoadConfig(), genie::DMELEventGenerator::LoadConfig(), genie::DMELKinematicsGenerator::LoadConfig(), genie::HEDISKinematicsGenerator::LoadConfig(), genie::HELeptonKinematicsGenerator::LoadConfig(), genie::IBDKinematicsGenerator::LoadConfig(), genie::NuEKinematicsGenerator::LoadConfig(), genie::QELEventGenerator::LoadConfig(), genie::QELEventGeneratorSuSA::LoadConfig(), genie::QELKinematicsGenerator::LoadConfig(), genie::RESKinematicsGenerator::LoadConfig(), genie::SKKinematicsGenerator::LoadConfig(), genie::SPPEventGenerator::LoadConfig(), genie::COHKinematicsGenerator::MaxXSec_AlvarezRuso(), and genie::HEDISKinematicsGenerator::ProcessEventRecord().

◆ fXSecModel

const XSecAlgorithmI* genie::KineGeneratorWithCache::fXSecModel
mutableprotected

Definition at line 68 of file KineGeneratorWithCache.h.

Referenced by genie::COHKinematicsGenerator::CalculateKin_AlvarezRuso(), genie::SKKinematicsGenerator::CalculateKin_AtharSingleKaon(), genie::COHKinematicsGenerator::CalculateKin_BergerSehgal(), genie::COHKinematicsGenerator::CalculateKin_BergerSehgalFM(), genie::COHKinematicsGenerator::CalculateKin_ReinSehgal(), genie::COHKinematicsGenerator::ComputeMaxXSec(), genie::DFRKinematicsGenerator::ComputeMaxXSec(), genie::DISKinematicsGenerator::ComputeMaxXSec(), genie::DMDISKinematicsGenerator::ComputeMaxXSec(), genie::DMEKinematicsGenerator::ComputeMaxXSec(), genie::DMELEventGenerator::ComputeMaxXSec(), genie::DMELKinematicsGenerator::ComputeMaxXSec(), genie::HELeptonKinematicsGenerator::ComputeMaxXSec(), genie::IBDKinematicsGenerator::ComputeMaxXSec(), genie::NuEKinematicsGenerator::ComputeMaxXSec(), genie::QELEventGenerator::ComputeMaxXSec(), genie::QELEventGeneratorSM::ComputeMaxXSec(), genie::QELEventGeneratorSM::ComputeMaxXSec(), genie::QELEventGeneratorSuSA::ComputeMaxXSec(), genie::QELKinematicsGenerator::ComputeMaxXSec(), genie::RESKinematicsGenerator::ComputeMaxXSec(), genie::SKKinematicsGenerator::ComputeMaxXSec(), genie::SPPEventGenerator::ComputeMaxXSec(), genie::COHKinematicsGenerator::MaxXSec_AlvarezRuso(), genie::COHKinematicsGenerator::MaxXSec_BergerSehgal(), genie::COHKinematicsGenerator::MaxXSec_BergerSehgalFM(), genie::COHKinematicsGenerator::MaxXSec_ReinSehgal(), genie::COHKinematicsGenerator::ProcessEventRecord(), genie::DFRKinematicsGenerator::ProcessEventRecord(), genie::DISKinematicsGenerator::ProcessEventRecord(), genie::DMDISKinematicsGenerator::ProcessEventRecord(), genie::DMEKinematicsGenerator::ProcessEventRecord(), genie::DMELEventGenerator::ProcessEventRecord(), genie::DMELKinematicsGenerator::ProcessEventRecord(), genie::HEDISKinematicsGenerator::ProcessEventRecord(), genie::HELeptonKinematicsGenerator::ProcessEventRecord(), genie::IBDKinematicsGenerator::ProcessEventRecord(), genie::NuEKinematicsGenerator::ProcessEventRecord(), genie::QELEventGenerator::ProcessEventRecord(), genie::QELEventGeneratorSM::ProcessEventRecord(), genie::QELEventGeneratorSuSA::ProcessEventRecord(), genie::QELKinematicsGenerator::ProcessEventRecord(), genie::RESKinematicsGenerator::ProcessEventRecord(), genie::SKKinematicsGenerator::ProcessEventRecord(), genie::SPPEventGenerator::ProcessEventRecord(), genie::HEDISKinematicsGenerator::Scan(), genie::QELEventGeneratorSuSA::SelectLeptonKinematics(), genie::DMELKinematicsGenerator::SpectralFuncExperimentalCode(), and genie::QELKinematicsGenerator::SpectralFuncExperimentalCode().

◆ vInterpolatorTypes

std::vector<string> genie::KineGeneratorWithCache::vInterpolatorTypes
protected

Type of interpolator for each key in a branch.

Definition at line 73 of file KineGeneratorWithCache.h.

Referenced by CacheMaxXSec(), and genie::QELEventGeneratorSM::LoadConfig().

◆ vSafetyFactors

std::vector<double> genie::KineGeneratorWithCache::vSafetyFactors
protected

MaxXSec -> MaxXSec * fSafetyFactors[nkey].

Definition at line 71 of file KineGeneratorWithCache.h.

Referenced by genie::QELEventGeneratorSM::LoadConfig(), and MaxXSec().


The documentation for this class was generated from the following files: