19 #include <TStopwatch.h> 
   34 using std::ostringstream;
 
   36 using namespace genie;
 
   37 using namespace genie::utils;
 
   38 using namespace genie::controls;
 
   39 using namespace genie::exceptions;
 
   66   LOG(
"EventGenerator", 
pNOTICE) << 
"Generating Event...";
 
   69   LOG(
"EventGenerator", 
pNOTICE) << 
"Clearing the GHepVirtualListFolder";
 
   79   unsigned int nexceptions = 0;
 
   84   string mesgh = 
"Event generation thread: " + this->
Id().
Key() + 
 
   85                  " -> Running module: ";
 
   89   vector<const EventRecordVisitorI *>::const_iterator miter;
 
   96     string mesg = mesgh + visitor->
Id().
Key();
 
  101            << 
"Fast Forward flag was set - Skipping processing step!";
 
  110       (*fEVGTime)[istep] = 
fWatch->CpuTime(); 
 
  115            << 
"An exception was thrown and caught by EventGenerator!";
 
  122            << 
") of EVGThreadExceptions/thread. Aborting";
 
  123          LOG(
"EventGenerator", 
pFATAL) << 
"Event : \n" << *event_rec ;
 
  136       bool accept = event_rec->
Accept();
 
  139           << 
"An unphysical event was generated and was accepted by the user";
 
  143           << 
"An unphysical event was generated and was rejected";
 
  159                << 
"Return at processing step " << rstep;
 
  160            advance(miter, rstep-istep-1);
 
  166                   << 
"Restoring GHEP as it was just before the return step";
 
  171            event_rec->
Copy(*snapshot);
 
  182            << 
"The EventRecord was visited by all EventRecordVisitors";
 
  184   LOG(
"EventGenerator", 
pINFO) << 
"** Event generation timing info **";
 
  191        << 
"module " << visitor->
Id().
Key() << 
" -> ~" 
  192                         << TMath::Max(0.,(*
fEVGTime)[istep++]) << 
" s";
 
  194   LOG(
"EventGenerator", 
pNOTICE) << 
"Done generating event!";
 
  239   if (gSystem->Getenv(
"GUNPHYSMASK")) {
 
  241      const char * bitfield = gSystem->Getenv(
"GUNPHYSMASK");
 
  244         bool flag = (bitfield[i]==
'1');
 
  261   LOG(
"EventGenerator", 
pDEBUG) << 
"Loading the generator validity context";
 
  263   string encoded_vld_context ;
 
  264   GetParam(
"VldContext", encoded_vld_context ) ;
 
  268   LOG(
"EventGenerator", 
pDEBUG) << 
"Loading the event generation modules";
 
  274          << 
"EventGenerator configuration declares null visitor list!";
 
  278   fEVGModuleVec = 
new vector<const EventRecordVisitorI *> (nsteps);
 
  279   fEVGTime      = 
new vector<double>(nsteps);
 
  281   for(
int istep = 0; istep < nsteps; istep++) {
 
  283     ostringstream keystream;
 
  284     keystream << 
"Module-" << istep;
 
  285     RgKey key = keystream.str();
 
  291         << 
" -- Loading module " << istep << 
" : " << temp_alg ;
 
  296     (*fEVGModuleVec)[istep] = visitor;
 
  297     (*fEVGTime)[istep]      = 0;
 
  301   RgKey ikey = 
"ILstGen";
 
  305       << 
" -- Loading the interaction list generator: " << ialg;
 
  315      << 
" -- Loading the cross section model: " << xalg;
 
  318       this -> 
SubAlg( xkey ) ) ;
 
Cross Section Calculation Interface. 
 
virtual void Copy(const GHepRecord &record)
 
GHepRecordHistory fRecHistory
event record history 
 
TBits * fFiltUnphysMask
mask for allowing unphysical events to pass through (if requested) 
 
const InteractionListGeneratorI * IntListGenerator(void) const 
 
Defines the InteractionListGeneratorI interface. Concrete implementations of this interface generate ...
 
Defines the EventRecordVisitorI interface. Concrete implementations of this interface use the 'Visito...
 
Defines the EventGeneratorI interface. 
 
bool FastForward(void) const 
 
void ProcessEventRecord(GHepRecord *event_rec) const 
 
vector< double > * fEVGTime
module timing info 
 
#define BLOG(stream, priority)
A macro that returns the requested log4cpp::Category appending no additional information. 
 
TStopwatch * fWatch
stopwatch for module timing 
 
void Configure(const Registry &config)
 
GVldContext * fVldContext
validity context 
 
void PurgeRecentHistory(int start_step)
 
int ReturnStep(void) const 
 
An exception thrown by EventRecordVisitorI when the normal processing sequence has to be disrupted (f...
 
static unsigned int NFlags(void)
 
virtual bool Accept(void) const 
 
#define LOG(stream, priority)
A macro that returns the requested log4cpp::Category appending a string (using the FILE...
 
virtual void ProcessEventRecord(GHepRecord *event_rec) const =0
 
virtual void Configure(const Registry &config)
 
void AddSnapshot(int step, GHepRecord *r)
 
virtual void ResetRecord(void)
 
A singleton class to manage all named GHepVirtualLists. 
 
static GHepVirtualListFolder * Instance(void)
 
virtual const AlgId & Id(void) const 
Get algorithm ID. 
 
A registry. Provides the container for algorithm configuration parameters. 
 
bool StepBack(void) const 
 
vector< const EventRecordVisitorI * > * fEVGModuleVec
list of modules 
 
string PrintFramedMesg(string mesg, unsigned int nl=1, const char f='*')
 
static const unsigned int kMaxEVGThreadExceptions
 
int AddLowRegistry(Registry *rp, bool owns=true)
add registry with lowest priority, also update ownership 
 
const GVldContext & ValidityContext(void) const 
 
bool GetParam(const RgKey &name, T &p, bool is_top_call=true) const 
 
const XSecAlgorithmI * CrossSectionAlg(void) const 
 
#define SLOG(stream, priority)
A macro that returns the requested log4cpp::Category appending a short string (using the FUNCTION and...
 
GENIE's GHEP MC event record. 
 
const InteractionListGeneratorI * fIntListGen
generates list of handled interactions 
 
Validity Context for an Event Generator. 
 
static AlgConfigPool * Instance()
 
void Decode(string encoded_values)
 
const XSecAlgorithmI * fXSecModel
xsec model for events handled by thread 
 
const Algorithm * SubAlg(const RgKey ®istry_key) const