GENIEGenerator
Loading...
Searching...
No Matches
Intranuke2025.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 Vast changes since then at Univ. of Pittsburgh and elsewhere
16
17\author Steve Dytman <dytman+@pitt.edu>, Pittsburgh University
18 Aaron Meyer <asm58@pitt.edu>, Pittsburgh University
19 Mohamed Ismail <msi10@PITT.EDU> , Pittsburgh University
20 Hugh Gallagher <gallag@minos.phy.tufts.edu>, Tufts University
21 Costas Andreopoulos <c.andreopoulos \at cern.ch> STFC, Rutherford Lab
22
23\created September 20, 2025
24
25\cpright Copyright (c) 2003-2025, The GENIE Collaboration
26 For the full text of the license visit http://copyright.genie-mc.org
27
28 Sepr 2025: MI, SD: copied from Intranuke2018.h with no modifications except labels
29*/
30//____________________________________________________________________________
31
32#ifndef _INTRANUKE_2025_H_
33#define _INTRANUKE_2025_H_
34
35#include <TGenPhaseSpace.h>
36
38
44
45class TLorentzVector;
46class TVector3;
47
48namespace genie {
49
50class GHepParticle;
52class PDGCodeList;
53class HNIntranuke2025;
54class HAIntranuke2025;
55
57
58friend class IntranukeTester;
59
60public :
62 Intranuke2025(string name);
63 Intranuke2025(string name, string config);
65
66 // implement the EventRecordVisitorI interface
67 virtual void ProcessEventRecord(GHepRecord * event_rec) const;
68
69 // override the Algorithm::Configure methods to load configuration
70 // data to protected data members
71 virtual void Configure (const Registry & config);
72 virtual void Configure (string param_set);
73
74 virtual string GetINukeMode() const {return "XX2025";};
75 virtual string GetGenINukeMode() const {return "XX";};
76
77 // Setters used in reweighting
78 inline void SetRemnA( int A ) { fRemnA = A; }
79 inline void SetRemnZ( int Z ) { fRemnZ = Z; }
80
81 inline double GetRemnA() const { return fRemnA; }
82 inline double GetRemnZ() const { return fRemnZ; }
83
84 inline double GetR0() const { return fR0; }
85 inline double GetNR() const { return fNR; }
86
87 inline double GetDelRPion() const { return fDelRPion; }
88 inline double GetDelRNucleon() const { return fDelRNucleon; }
89
90 inline double GetNucRmvE() const { return fNucRmvE; }
91 inline double GetHadStep() const { return fHadStep; }
92
93 inline bool GetUseOset() const { return fUseOset; }
94 inline bool GetAltOset() const { return fAltOset; }
95 inline bool GetXsecNNCorr() const { return fXsecNNCorr; }
96
97protected:
98
99 // methods for loading configuration
100 virtual void LoadConfig (void)=0;
101
102 // general methods for the cascade mc structure
103 void TransportHadrons (GHepRecord * ev) const;
104 void GenerateVertex (GHepRecord * ev) const;
105 bool NeedsRescattering (const GHepParticle* p) const;
106 bool CanRescatter (const GHepParticle* p) const;
107 bool IsInNucleus (const GHepParticle* p) const;
108 void SetTrackingRadius (const GHepParticle* p) const;
109 double GenerateStep (GHepRecord* ev, GHepParticle* p) const;
110
111 // virtual functions for individual modes
112 virtual void SimulateHadronicFinalState(GHepRecord* ev, GHepParticle* p) const = 0;
113 virtual int HandleCompoundNucleus(GHepRecord* ev, GHepParticle* p, int mom) const = 0;
114
115 // utility objects & params
116 mutable double fTrackingRadius;///< tracking radius for the nucleus in the current event
117 mutable TGenPhaseSpace fGenPhaseSpace; ///< a phase space generator
118 INukeHadroData2025 * fHadroData2025; ///< a collection of h+N,h+A data & calculations
119 AlgFactory * fAlgf; ///< algorithm factory instance
120 const NuclearModelI * fNuclmodel; ///< nuclear model used to generate fermi momentum
121 mutable int fRemnA; ///< remnant nucleus A
122 mutable int fRemnZ; ///< remnant nucleus Z
123 mutable TLorentzVector fRemnP4; ///< P4 of remnant system
124 mutable GEvGenMode_t fGMode; ///< event generation mode (lepton+A, hadron+A, ...)
125
126 // configuration parameters
127 double fR0; ///< effective nuclear size param
128 double fNR; ///< param multiplying the nuclear radius, determining how far to track hadrons beyond the "nuclear boundary"
129 double fNucRmvE; ///< binding energy to subtract from cascade nucleons
130 double fDelRPion; ///< factor by which Pion Compton wavelength gets multiplied to become nuclear size enhancement
131 double fDelRNucleon; ///< factor by which Nucleon Compton wavelength gets multiplied to become nuclear size enhancement
132 double fHadStep; ///< step size for intranuclear hadron transport
133 double fNucAbsFac; ///< absorption xsec correction factor (hN Mode)
134 double fNucCEXFac; ///< charge exchange xsec correction factor (hN Mode)
135 double fEPreEq; ///< threshold for pre-equilibrium reaction
136 double fFermiFac; ///< testing parameter to modify fermi momentum
137 double fFermiMomentum; ///< whether or not particle collision is pauli blocked
138 bool fDoFermi; ///< whether or not to do fermi mom.
139 bool fDoMassDiff; ///< whether or not to do mass diff. mode
140 bool fDoCompoundNucleus; ///< whether or not to do compound nucleus considerations
141 bool fUseOset; ///< Oset model for low energy pion in hN
142 bool fAltOset; ///< NuWro's table-based implementation (not recommended)
143 bool fXsecNNCorr; ///< use nuclear medium correction for NN cross section
144
145 double fChPionMFPScale; ///< tweaking factors for tuning
157
158};
159
160} // genie namespace
161
162#endif // _INTRANUKE_2025_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
Singleton class to load & serve hadron x-section splines used by GENIE's version of the INTRANUKE cas...
virtual void Configure(const Registry &config)
double fChPionMFPScale
tweaking factors for tuning
double fDelRPion
factor by which Pion Compton wavelength gets multiplied to become nuclear size enhancement
TGenPhaseSpace fGenPhaseSpace
a phase space generator
double GetRemnZ() const
double GetDelRPion() const
bool NeedsRescattering(const GHepParticle *p) const
virtual string GetINukeMode() const
double GenerateStep(GHepRecord *ev, GHepParticle *p) const
int fRemnA
remnant nucleus A
AlgFactory * fAlgf
algorithm factory instance
bool GetUseOset() const
bool fDoMassDiff
whether or not to do mass diff. mode
virtual string GetGenINukeMode() const
bool GetXsecNNCorr() const
double fNucAbsFac
absorption xsec correction factor (hN Mode)
double GetHadStep() const
int fRemnZ
remnant nucleus Z
double fHadStep
step size for intranuclear hadron transport
double fFermiMomentum
whether or not particle collision is pauli blocked
double fNR
param multiplying the nuclear radius, determining how far to track hadrons beyond the "nuclear bounda...
GEvGenMode_t fGMode
event generation mode (lepton+A, hadron+A, ...)
double GetNucRmvE() const
virtual void SimulateHadronicFinalState(GHepRecord *ev, GHepParticle *p) const =0
double GetNR() const
bool fUseOset
Oset model for low energy pion in hN.
bool CanRescatter(const GHepParticle *p) const
double GetR0() const
bool fAltOset
NuWro's table-based implementation (not recommended)
double fTrackingRadius
tracking radius for the nucleus in the current event
TLorentzVector fRemnP4
P4 of remnant system.
bool GetAltOset() const
double fFermiFac
testing parameter to modify fermi momentum
double GetRemnA() const
void GenerateVertex(GHepRecord *ev) const
double fNucRmvE
binding energy to subtract from cascade nucleons
bool fXsecNNCorr
use nuclear medium correction for NN cross section
bool IsInNucleus(const GHepParticle *p) const
void TransportHadrons(GHepRecord *ev) const
friend class IntranukeTester
bool fDoCompoundNucleus
whether or not to do compound nucleus considerations
INukeHadroData2025 * fHadroData2025
a collection of h+N,h+A data & calculations
double fDelRNucleon
factor by which Nucleon Compton wavelength gets multiplied to become nuclear size enhancement
double GetDelRNucleon() const
virtual int HandleCompoundNucleus(GHepRecord *ev, GHepParticle *p, int mom) const =0
const NuclearModelI * fNuclmodel
nuclear model used to generate fermi momentum
virtual void ProcessEventRecord(GHepRecord *event_rec) const
double fNucCEXFac
charge exchange xsec correction factor (hN Mode)
bool fDoFermi
whether or not to do fermi mom.
void SetTrackingRadius(const GHepParticle *p) const
double fR0
effective nuclear size param
virtual void LoadConfig(void)=0
double fEPreEq
threshold for pre-equilibrium reaction
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