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 <costas.andreopoulos \at stfc.ac.uk> STFC, Rutherford Lab
21 
22 \created September 20, 2005
23 
24 \cpright Copyright (c) 2003-2019, The GENIE Collaboration
25  For the full text of the license visit http://copyright.genie-mc.org
26  or see $GENIE/LICENSE
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 protected:
76 
77  // methods for loading configuration
78  virtual void LoadConfig (void)=0;
79 
80  // general methods for the cascade mc structure
81  void TransportHadrons (GHepRecord * ev) const;
82  void GenerateVertex (GHepRecord * ev) const;
83  bool NeedsRescattering (const GHepParticle* p) const;
84  bool CanRescatter (const GHepParticle* p) const;
85  bool IsInNucleus (const GHepParticle* p) const;
86  void SetTrackingRadius (const GHepParticle* p) const;
87  double GenerateStep (GHepRecord* ev, GHepParticle* p) const;
88 
89  // virtual functions for individual modes
90  virtual void SimulateHadronicFinalState(GHepRecord* ev, GHepParticle* p) const = 0;
91  virtual int HandleCompoundNucleus(GHepRecord* ev, GHepParticle* p, int mom) const = 0;
92 
93  // utility objects & params
94  mutable double fTrackingRadius;///< tracking radius for the nucleus in the current event
95  mutable TGenPhaseSpace fGenPhaseSpace; ///< a phase space generator
96  INukeHadroData2018 * fHadroData2018; ///< a collection of h+N,h+A data & calculations
97  AlgFactory * fAlgf; ///< algorithm factory instance
98  const NuclearModelI * fNuclmodel; ///< nuclear model used to generate fermi momentum
99  mutable int fRemnA; ///< remnant nucleus A
100  mutable int fRemnZ; ///< remnant nucleus Z
101  mutable TLorentzVector fRemnP4; ///< P4 of remnant system
102  mutable GEvGenMode_t fGMode; ///< event generation mode (lepton+A, hadron+A, ...)
103 
104  // configuration parameters
105  double fR0; ///< effective nuclear size param
106  double fNR; ///< param multiplying the nuclear radius, determining how far to track hadrons beyond the "nuclear boundary"
107  double fNucRmvE; ///< binding energy to subtract from cascade nucleons
108  double fDelRPion; ///< factor by which Pion Compton wavelength gets multiplied to become nuclear size enhancement
109  double fDelRNucleon; ///< factor by which Nucleon Compton wavelength gets multiplied to become nuclear size enhancement
110  double fHadStep; ///< step size for intranuclear hadron transport
111  double fNucAbsFac; ///< absorption xsec correction factor (hN Mode)
112  double fNucCEXFac; ///< charge exchange xsec correction factor (hN Mode)
113  double fEPreEq; ///< threshold for pre-equilibrium reaction
114  double fFermiFac; ///< testing parameter to modify fermi momentum
115  double fFermiMomentum; ///< whether or not particle collision is pauli blocked
116  bool fDoFermi; ///< whether or not to do fermi mom.
117  bool fDoMassDiff; ///< whether or not to do mass diff. mode
118  bool fDoCompoundNucleus; ///< whether or not to do compound nucleus considerations
119  bool fUseOset; ///< Oset model for low energy pion in hN
120  bool fAltOset; ///< NuWro's table-based implementation (not recommended)
121  bool fXsecNNCorr; ///< use nuclear medium correction for NN cross section
122 
123  double fPionMFPScale; ///< tweaking factors for tuning
133 
134 };
135 
136 } // genie namespace
137 
138 #endif // _INTRANUKE_2018_H_
const XML_Char * name
Definition: expat.h:151
double fFermiMomentum
whether or not particle collision is pauli blocked
THE MAIN GENIE PROJECT NAMESPACE
Definition: GeneratorBase.h:8
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 "nuclear bounda...
double fFermiFac
testing parameter to modify fermi momentum
const char * p
Definition: xmltok.h:285
virtual void Configure(const Registry &config)
int fRemnA
remnant nucleus A
Definition: Intranuke2018.h:99
TGenPhaseSpace fGenPhaseSpace
a phase space generator
Definition: Intranuke2018.h:95
Pure abstract base class. Defines the NuclearModelI interface to be implemented by any physics model ...
Definition: NuclearModelI.h:42
bool fXsecNNCorr
use nuclear medium correction for NN cross section
Definition: config.py:1
bool IsInNucleus(const GHepParticle *p) const
AlgFactory * fAlgf
algorithm factory instance
Definition: Intranuke2018.h:97
bool CanRescatter(const GHepParticle *p) const
double fNucAbsFac
absorption xsec correction factor (hN Mode)
GEvGenMode_t fGMode
event generation mode (lepton+A, hadron+A, ...)
const NuclearModelI * fNuclmodel
nuclear model used to generate fermi momentum
Definition: Intranuke2018.h:98
Enumeration of GENIE event generation modes.
double fPionMFPScale
tweaking factors for tuning
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
void GenerateVertex(GHepRecord *ev) const
double fR0
effective nuclear size param
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
bool fAltOset
NuWro&#39;s table-based implementation (not recommended)
A registry. Provides the container for algorithm configuration parameters.
Definition: Registry.h:66
INukeHadroData2018 * fHadroData2018
a collection of h+N,h+A data & calculations
Definition: Intranuke2018.h:96
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
Definition: Intranuke2018.h:94
The GENIE Algorithm Factory.
Definition: AlgFactory.h:40
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:46
virtual void SimulateHadronicFinalState(GHepRecord *ev, GHepParticle *p) const =0
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:40
virtual int HandleCompoundNucleus(GHepRecord *ev, GHepParticle *p, int mom) const =0
int fRemnZ
remnant nucleus Z
TLorentzVector fRemnP4
P4 of remnant system.