GENIEGenerator
Loading...
Searching...
No Matches
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-2025, 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
43class TLorentzVector;
44class TVector3;
45
46namespace genie {
47
48class GHepParticle;
50class PDGCodeList;
51class HNIntranuke2018;
52class HAIntranuke2018;
53
55
56friend class IntranukeTester;
57
58public :
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
95protected:
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_
The GENIE Algorithm Factory.
Definition AlgFactory.h:39
STDHEP-like event record entry that can fit a particle or a nucleus.
GENIE's GHEP MC event record.
Definition GHepRecord.h:45
double GetNucRmvE() const
double fNucRmvE
binding energy to subtract from cascade nucleons
double fEPreEq
threshold for pre-equilibrium reaction
double fR0
effective nuclear size param
double fNucAbsFac
absorption xsec correction factor (hN Mode)
bool fUseOset
Oset model for low energy pion in hN.
bool fXsecNNCorr
use nuclear medium correction for NN cross section
bool CanRescatter(const GHepParticle *p) const
double fNR
param multiplying the nuclear radius, determining how far to track hadrons beyond the "nuclear bounda...
double fNucCEXFac
charge exchange xsec correction factor (hN Mode)
double fFermiFac
testing parameter to modify fermi momentum
virtual void Configure(const Registry &config)
bool GetXsecNNCorr() const
int fRemnZ
remnant nucleus Z
double fFermiMomentum
whether or not particle collision is pauli blocked
double fChPionMFPScale
tweaking factors for tuning
void GenerateVertex(GHepRecord *ev) const
const NuclearModelI * fNuclmodel
nuclear model used to generate fermi momentum
double fTrackingRadius
tracking radius for the nucleus in the current event
virtual void LoadConfig(void)=0
INukeHadroData2018 * fHadroData2018
a collection of h+N,h+A data & calculations
double GetRemnZ() const
GEvGenMode_t fGMode
event generation mode (lepton+A, hadron+A, ...)
bool IsInNucleus(const GHepParticle *p) const
bool fDoCompoundNucleus
whether or not to do compound nucleus considerations
double GenerateStep(GHepRecord *ev, GHepParticle *p) const
bool fDoMassDiff
whether or not to do mass diff. mode
double GetHadStep() const
virtual int HandleCompoundNucleus(GHepRecord *ev, GHepParticle *p, int mom) const =0
double GetR0() const
bool GetAltOset() const
void SetTrackingRadius(const GHepParticle *p) const
double GetDelRPion() const
bool fDoFermi
whether or not to do fermi mom.
int fRemnA
remnant nucleus A
friend class IntranukeTester
bool NeedsRescattering(const GHepParticle *p) const
double GetDelRNucleon() const
void TransportHadrons(GHepRecord *ev) const
AlgFactory * fAlgf
algorithm factory instance
virtual string GetGenINukeMode() const
bool GetUseOset() const
double GetRemnA() const
TGenPhaseSpace fGenPhaseSpace
a phase space generator
double fHadStep
step size for intranuclear hadron transport
bool fAltOset
NuWro's table-based implementation (not recommended)
virtual void ProcessEventRecord(GHepRecord *event_rec) const
double fDelRNucleon
factor by which Nucleon Compton wavelength gets multiplied to become nuclear size enhancement
TLorentzVector fRemnP4
P4 of remnant system.
virtual void SimulateHadronicFinalState(GHepRecord *ev, GHepParticle *p) const =0
virtual string GetINukeMode() const
double GetNR() const
double fDelRPion
factor by which Pion Compton wavelength gets multiplied to become nuclear size enhancement
Pure abstract base class. Defines the NuclearModelI interface to be implemented by any physics model ...
A list of PDG codes.
Definition PDGCodeList.h:32
A registry. Provides the container for algorithm configuration parameters.
Definition Registry.h:65
THE MAIN GENIE PROJECT NAMESPACE
Definition AlgCmp.h:25
enum genie::EGEvGenMode GEvGenMode_t