MECGenerator.h
Go to the documentation of this file.
1 //____________________________________________________________________________
2 /*!
3 
4 \class genie::MECGenerator
5 
6 \brief Simulate the primary MEC interaction
7 
8 \author Costas Andreopoulos <constantinos.andreopoulos \at cern.ch>
9  University of Liverpool & STFC Rutherford Appleton Laboratory
10 
11  Steve Dytman <dytman+ \at pitt.edu>
12  Pittsburgh University
13 
14 \created Sep. 22, 2008
15 
16 \cpright Copyright (c) 2003-2020, The GENIE Collaboration
17  For the full text of the license visit http://copyright.genie-mc.org
18 */
19 //____________________________________________________________________________
20 
21 #ifndef _MEC_GENERATOR_H_
22 #define _MEC_GENERATOR_H_
23 
24 #include <TGenPhaseSpace.h>
25 #include "Framework/Utils/Range1.h"
26 
29 
30 namespace genie {
31 
32 class Interaction;
33 class NuclearModelI;
34 class XSecAlgorithmI;
35 
37 
38 public :
39  MECGenerator();
40  MECGenerator(string config);
41  ~MECGenerator();
42 
43  // implement the EventRecordVisitorI interface
44  void ProcessEventRecord (GHepRecord * event) const;
45 
46  // overload the Algorithm::Configure() methods to load private data
47  // members from configuration options
48  void Configure(const Registry & config);
49  void Configure(string config);
50 
51 private:
52 
53  void LoadConfig (void);
54  void AddNucleonCluster (GHepRecord * event) const;
55  void AddTargetRemnant (GHepRecord * event) const;
56  void GenerateFermiMomentum (GHepRecord * event) const;
57  void SelectEmpiricalKinematics (GHepRecord * event) const;
58  void AddFinalStateLepton (GHepRecord * event) const;
59  void RecoilNucleonCluster (GHepRecord * event) const;
60  void DecayNucleonCluster (GHepRecord * event) const;
61  void SelectNSVLeptonKinematics (GHepRecord * event) const;
62  void SelectSuSALeptonKinematics (GHepRecord * event) const;
63  void GenerateNSVInitialHadrons (GHepRecord * event) const;
64  PDGCodeList NucleonClusterConstituents (int pdgc) const;
65 
66  // Helper function that computes the maximum differential cross section
67  // in the kPSTlctl phase space
68  double GetXSecMaxTlctl( const Interaction & inter, const Range1D_t & Tl_range, const Range1D_t & ctl_range ) const;
69 
70  mutable const XSecAlgorithmI * fXSecModel;
71  mutable TGenPhaseSpace fPhaseSpaceGenerator;
73 
74  double fSafetyFactor ;
76  double fRelTolerance ; // Relative tolerance
79 
80  double fQ3Max;
81 
82  // Tolerate this maximum percent deviation above the calculated maximum cross
83  // section when sampling lepton kinematics for the SuSAv2-MEC model.
85 };
86 
87 } // genie namespace
88 #endif // _MEC_GENERATOR_H_
Cross Section Calculation Interface.
void ProcessEventRecord(GHepRecord *event) const
void AddNucleonCluster(GHepRecord *event) const
void SelectNSVLeptonKinematics(GHepRecord *event) const
const NuclearModelI * fNuclModel
Definition: MECGenerator.h:72
THE MAIN GENIE PROJECT NAMESPACE
Definition: AlgCmp.h:25
Defines the EventRecordVisitorI interface. Concrete implementations of this interface use the &#39;Visito...
A simple [min,max] interval for doubles.
Definition: Range1.h:42
void Configure(const Registry &config)
double GetXSecMaxTlctl(const Interaction &inter, const Range1D_t &Tl_range, const Range1D_t &ctl_range) const
Pure abstract base class. Defines the NuclearModelI interface to be implemented by any physics model ...
Definition: NuclearModelI.h:46
A list of PDG codes.
Definition: PDGCodeList.h:32
void GenerateNSVInitialHadrons(GHepRecord *event) const
Summary information for an interaction.
Definition: Interaction.h:56
static Config * config
Definition: config.cpp:1054
void RecoilNucleonCluster(GHepRecord *event) const
void DecayNucleonCluster(GHepRecord *event) const
Simulate the primary MEC interaction.
Definition: MECGenerator.h:36
void SelectSuSALeptonKinematics(GHepRecord *event) const
PDGCodeList NucleonClusterConstituents(int pdgc) const
void SelectEmpiricalKinematics(GHepRecord *event) const
A registry. Provides the container for algorithm configuration parameters.
Definition: Registry.h:65
const XSecAlgorithmI * fXSecModel
Definition: MECGenerator.h:70
void AddTargetRemnant(GHepRecord *event) const
void GenerateFermiMomentum(GHepRecord *event) const
GENIE&#39;s GHEP MC event record.
Definition: GHepRecord.h:45
void AddFinalStateLepton(GHepRecord *event) const
Event finding and building.
TGenPhaseSpace fPhaseSpaceGenerator
Definition: MECGenerator.h:71
double fSuSAMaxXSecDiffTolerance
Definition: MECGenerator.h:84