GENIEGenerator
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Pages
Intranuke2018.h
Go to the documentation of this file.
1 //____________________________________________________________________________
2 /*!
3 
4 \class genie::Intranuke
5 
6 \brief The INTRANUKE intranuclear hadron transport MC.
7  Is a concrete implementation of the EventRecordVisitorI interface.
8 
9 \ref R.Merenyi et al., Phys.Rev.D45 (1992)
10  R.D.Ransome, Nucl.Phys.B 139 (2005)
11 
12  Current INTRANUKE development is led by S.Dytman and H.Gallagher.
13  The original INTRANUKE cascade MC was developed (in fortran) for the
14  NeuGEN MC by R.Edgecock, G.F.Pearce, W.A.Mann, R.Merenyi and others.
15 
16 \author Steve Dytman <dytman+@pitt.edu>, Pittsburgh University
17  Aaron Meyer <asm58@pitt.edu>, Pittsburgh University
18  Alex Bell, Pittsburgh University
19  Hugh Gallagher <gallag@minos.phy.tufts.edu>, Tufts University
20  Costas Andreopoulos <c.andreopoulos \at cern.ch> STFC, Rutherford Lab
21 
22 \created September 20, 2005
23 
24 \cpright Copyright (c) 2003-2024, The GENIE Collaboration
25  For the full text of the license visit http://copyright.genie-mc.org
26 
27 */
28 //____________________________________________________________________________
29 
30 #ifndef _INTRANUKE_2018_H_
31 #define _INTRANUKE_2018_H_
32 
33 #include <TGenPhaseSpace.h>
34 
36 
42 
43 class TLorentzVector;
44 class TVector3;
45 
46 namespace genie {
47 
48 class GHepParticle;
49 class INukeHadroData2018;
50 class PDGCodeList;
51 class HNIntranuke2018;
52 class HAIntranuke2018;
53 
55 
56 friend class IntranukeTester;
57 
58 public :
59  Intranuke2018();
60  Intranuke2018(string name);
61  Intranuke2018(string name, string config);
63 
64  // implement the EventRecordVisitorI interface
65  virtual void ProcessEventRecord(GHepRecord * event_rec) const;
66 
67  // override the Algorithm::Configure methods to load configuration
68  // data to protected data members
69  virtual void Configure (const Registry & config);
70  virtual void Configure (string param_set);
71 
72  virtual string GetINukeMode() const {return "XX2018";};
73  virtual string GetGenINukeMode() const {return "XX";};
74 
75  // Setters used in reweighting
76  inline void SetRemnA( int A ) { fRemnA = A; }
77  inline void SetRemnZ( int Z ) { fRemnZ = Z; }
78 
79  inline double GetRemnA() const { return fRemnA; }
80  inline double GetRemnZ() const { return fRemnZ; }
81 
82  inline double GetR0() const { return fR0; }
83  inline double GetNR() const { return fNR; }
84 
85  inline double GetDelRPion() const { return fDelRPion; }
86  inline double GetDelRNucleon() const { return fDelRNucleon; }
87 
88  inline double GetNucRmvE() const { return fNucRmvE; }
89  inline double GetHadStep() const { return fHadStep; }
90 
91  inline bool GetUseOset() const { return fUseOset; }
92  inline bool GetAltOset() const { return fAltOset; }
93  inline bool GetXsecNNCorr() const { return fXsecNNCorr; }
94 
95 protected:
96 
97  // methods for loading configuration
98  virtual void LoadConfig (void)=0;
99 
100  // general methods for the cascade mc structure
101  void TransportHadrons (GHepRecord * ev) const;
102  void GenerateVertex (GHepRecord * ev) const;
103  bool NeedsRescattering (const GHepParticle* p) const;
104  bool CanRescatter (const GHepParticle* p) const;
105  bool IsInNucleus (const GHepParticle* p) const;
106  void SetTrackingRadius (const GHepParticle* p) const;
107  double GenerateStep (GHepRecord* ev, GHepParticle* p) const;
108 
109  // virtual functions for individual modes
110  virtual void SimulateHadronicFinalState(GHepRecord* ev, GHepParticle* p) const = 0;
111  virtual int HandleCompoundNucleus(GHepRecord* ev, GHepParticle* p, int mom) const = 0;
112 
113  // utility objects & params
114  mutable double fTrackingRadius;///< tracking radius for the nucleus in the current event
115  mutable TGenPhaseSpace fGenPhaseSpace; ///< a phase space generator
116  INukeHadroData2018 * fHadroData2018; ///< a collection of h+N,h+A data & calculations
117  AlgFactory * fAlgf; ///< algorithm factory instance
118  const NuclearModelI * fNuclmodel; ///< nuclear model used to generate fermi momentum
119  mutable int fRemnA; ///< remnant nucleus A
120  mutable int fRemnZ; ///< remnant nucleus Z
121  mutable TLorentzVector fRemnP4; ///< P4 of remnant system
122  mutable GEvGenMode_t fGMode; ///< event generation mode (lepton+A, hadron+A, ...)
123 
124  // configuration parameters
125  double fR0; ///< effective nuclear size param
126  double fNR; ///< param multiplying the nuclear radius, determining how far to track hadrons beyond the "nuclear boundary"
127  double fNucRmvE; ///< binding energy to subtract from cascade nucleons
128  double fDelRPion; ///< factor by which Pion Compton wavelength gets multiplied to become nuclear size enhancement
129  double fDelRNucleon; ///< factor by which Nucleon Compton wavelength gets multiplied to become nuclear size enhancement
130  double fHadStep; ///< step size for intranuclear hadron transport
131  double fNucAbsFac; ///< absorption xsec correction factor (hN Mode)
132  double fNucCEXFac; ///< charge exchange xsec correction factor (hN Mode)
133  double fEPreEq; ///< threshold for pre-equilibrium reaction
134  double fFermiFac; ///< testing parameter to modify fermi momentum
135  double fFermiMomentum; ///< whether or not particle collision is pauli blocked
136  bool fDoFermi; ///< whether or not to do fermi mom.
137  bool fDoMassDiff; ///< whether or not to do mass diff. mode
138  bool fDoCompoundNucleus; ///< whether or not to do compound nucleus considerations
139  bool fUseOset; ///< Oset model for low energy pion in hN
140  bool fAltOset; ///< NuWro's table-based implementation (not recommended)
141  bool fXsecNNCorr; ///< use nuclear medium correction for NN cross section
142 
143  double fChPionMFPScale; ///< tweaking factors for tuning
155 
156 };
157 
158 } // genie namespace
159 
160 #endif // _INTRANUKE_2018_H_
void SetRemnZ(int Z)
Definition: Intranuke2018.h:77
double GetNR() const
Definition: Intranuke2018.h:83
double fFermiMomentum
whether or not particle collision is pauli blocked
virtual int HandleCompoundNucleus(GHepRecord *ev, GHepParticle *p, int mom) const =0
double GetNucRmvE() const
Definition: Intranuke2018.h:88
bool GetUseOset() const
Definition: Intranuke2018.h:91
Defines the EventRecordVisitorI interface. Concrete implementations of this interface use the &#39;Visito...
double fDelRPion
factor by which Pion Compton wavelength gets multiplied to become nuclear size enhancement ...
double fEPreEq
threshold for pre-equilibrium reaction
virtual string GetINukeMode() const
Definition: Intranuke2018.h:72
double fNR
param multiplying the nuclear radius, determining how far to track hadrons beyond the &quot;nuclear bounda...
double fFermiFac
testing parameter to modify fermi momentum
virtual void Configure(const Registry &config)
int fRemnA
remnant nucleus A
double fChPionMFPScale
tweaking factors for tuning
TGenPhaseSpace fGenPhaseSpace
a phase space generator
Pure abstract base class. Defines the NuclearModelI interface to be implemented by any physics model ...
Definition: NuclearModelI.h:46
bool fXsecNNCorr
use nuclear medium correction for NN cross section
double GetHadStep() const
Definition: Intranuke2018.h:89
bool IsInNucleus(const GHepParticle *p) const
AlgFactory * fAlgf
algorithm factory instance
bool CanRescatter(const GHepParticle *p) const
double fNucAbsFac
absorption xsec correction factor (hN Mode)
double GetRemnA() const
Definition: Intranuke2018.h:79
GEvGenMode_t fGMode
event generation mode (lepton+A, hadron+A, ...)
const NuclearModelI * fNuclmodel
nuclear model used to generate fermi momentum
double GetDelRPion() const
Definition: Intranuke2018.h:85
Enumeration of GENIE event generation modes.
static constexpr double A
Definition: Units.h:74
double GetR0() const
Definition: Intranuke2018.h:82
bool NeedsRescattering(const GHepParticle *p) const
bool fDoMassDiff
whether or not to do mass diff. mode
bool fDoFermi
whether or not to do fermi mom.
void SetTrackingRadius(const GHepParticle *p) const
double fNucCEXFac
charge exchange xsec correction factor (hN Mode)
virtual void LoadConfig(void)=0
bool GetAltOset() const
Definition: Intranuke2018.h:92
void GenerateVertex(GHepRecord *ev) const
double fR0
effective nuclear size param
double GetRemnZ() const
Definition: Intranuke2018.h:80
double GenerateStep(GHepRecord *ev, GHepParticle *p) const
bool fDoCompoundNucleus
whether or not to do compound nucleus considerations
virtual void ProcessEventRecord(GHepRecord *event_rec) const
virtual string GetGenINukeMode() const
Definition: Intranuke2018.h:73
virtual void SimulateHadronicFinalState(GHepRecord *ev, GHepParticle *p) const =0
bool fAltOset
NuWro&#39;s table-based implementation (not recommended)
A registry. Provides the container for algorithm configuration parameters.
Definition: Registry.h:65
INukeHadroData2018 * fHadroData2018
a collection of h+N,h+A data &amp; calculations
double fDelRNucleon
factor by which Nucleon Compton wavelength gets multiplied to become nuclear size enhancement ...
double fHadStep
step size for intranuclear hadron transport
void TransportHadrons(GHepRecord *ev) const
double fTrackingRadius
tracking radius for the nucleus in the current event
The GENIE Algorithm Factory.
Definition: AlgFactory.h:39
double fNucRmvE
binding energy to subtract from cascade nucleons
friend class IntranukeTester
Definition: Intranuke2018.h:56
GENIE&#39;s GHEP MC event record.
Definition: GHepRecord.h:45
double GetDelRNucleon() const
Definition: Intranuke2018.h:86
bool fUseOset
Oset model for low energy pion in hN.
STDHEP-like event record entry that can fit a particle or a nucleus.
Definition: GHepParticle.h:39
bool GetXsecNNCorr() const
Definition: Intranuke2018.h:93
void SetRemnA(int A)
Definition: Intranuke2018.h:76
int fRemnZ
remnant nucleus Z
TLorentzVector fRemnP4
P4 of remnant system.