EventGenerator.h
Go to the documentation of this file.
1 //____________________________________________________________________________
2 /*!
3 
4 \class genie::EventGenerator
5 
6 \brief Encapsulates a full ordered list of (is the aggregate of) concrete
7  EventGeneratorI implementations that must act on the EventRecord
8  to generate an event. Each of these implementations corresponds to
9  a single processing step.
10 
11  Is a concrete implementation of the EventGeneratorI interface.
12 
13 \author Costas Andreopoulos <costas.andreopoulos \at stfc.ac.uk>
14  University of Liverpool & STFC Rutherford Appleton Lab
15 
16 \created October 03, 2004
17 
18 \cpright Copyright (c) 2003-2019, The GENIE Collaboration
19  For the full text of the license visit http://copyright.genie-mc.org
20  or see $GENIE/LICENSE
21 */
22 //____________________________________________________________________________
23 
24 #ifndef _EVENT_GENERATOR_H_
25 #define _EVENT_GENERATOR_H_
26 
27 #include <vector>
28 
31 
32 class TStopwatch;
33 class TBits;
34 
35 using std::vector;
36 
37 namespace genie {
38 
40 
41 public :
43  EventGenerator(string config);
45 
46  //-- implement the original EventRecordVisitorI interface
47  void ProcessEventRecord(GHepRecord * event_rec) const;
48 
49  //-- implement the extensions to the EventRecordVisitorI interface
50  const GVldContext & ValidityContext (void) const;
51  const InteractionListGeneratorI * IntListGenerator (void) const;
52  const XSecAlgorithmI * CrossSectionAlg (void) const;
53 
54  //-- override the Algorithm::Configure methods to load configuration
55  // data to private data members
56  void Configure (const Registry & config);
57  void Configure (string param_set);
58 
59 private:
60 
61  void Init (void);
62  void LoadConfig (void);
63 
64  //-- private data members
65  vector<const EventRecordVisitorI *> * fEVGModuleVec; ///< list of modules
66  vector<double> * fEVGTime; ///< module timing info
67  const XSecAlgorithmI * fXSecModel; ///< xsec model for events handled by thread
68  const InteractionListGeneratorI * fIntListGen; ///< generates list of handled interactions
69  GVldContext * fVldContext; ///< validity context
70  TStopwatch * fWatch; ///< stopwatch for module timing
71  TBits * fFiltUnphysMask; ///< mask for allowing unphysical events to pass through (if requested)
72  mutable GHepRecordHistory fRecHistory; ///< event record history
73 };
74 
75 } // genie namespace
76 
77 #endif // _EVENT_GENERATOR_H_
Cross Section Calculation Interface.
GHepRecordHistory fRecHistory
event record history
Holds the history of the GHEP event record as it being modified by the processing steps of an event g...
THE MAIN GENIE PROJECT NAMESPACE
Definition: GeneratorBase.h:8
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 ...
Encapsulates a full ordered list of (is the aggregate of) concrete EventGeneratorI implementations th...
Defines the EventGeneratorI interface.
void ProcessEventRecord(GHepRecord *event_rec) const
vector< double > * fEVGTime
module timing info
Definition: config.py:1
TStopwatch * fWatch
stopwatch for module timing
void Configure(const Registry &config)
GVldContext * fVldContext
validity context
A registry. Provides the container for algorithm configuration parameters.
Definition: Registry.h:66
vector< const EventRecordVisitorI * > * fEVGModuleVec
list of modules
const GVldContext & ValidityContext(void) const
const XSecAlgorithmI * CrossSectionAlg(void) const
GENIE&#39;s GHEP MC event record.
Definition: GHepRecord.h:46
const InteractionListGeneratorI * fIntListGen
generates list of handled interactions
Validity Context for an Event Generator.
Definition: GVldContext.h:38
const XSecAlgorithmI * fXSecModel
xsec model for events handled by thread