GENIEGenerator
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Pages
Intranuke.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_H_
31 #define _INTRANUKE_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 INukeHadroData;
50 class PDGCodeList;
51 class HNIntranuke;
52 class HAIntranuke;
53 
55 
56 friend class IntranukeTester;
57 
58 public :
59  Intranuke();
60  Intranuke(string name);
61  Intranuke(string name, string config);
62  ~Intranuke();
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  void Configure (const Registry & config);
70  void Configure (string param_set);
71 
72 protected:
73 
74  // methods for loading configuration
75  virtual void LoadConfig (void)=0;
76 
77  // general methods for the cascade mc structure
78  void TransportHadrons (GHepRecord * ev) const;
79  void GenerateVertex (GHepRecord * ev) const;
80  bool NeedsRescattering (const GHepParticle* p) const;
81  bool CanRescatter (const GHepParticle* p) const;
82  bool IsInNucleus (const GHepParticle* p) const;
83  void SetTrackingRadius (const GHepParticle* p) const;
84  double GenerateStep (GHepRecord* ev, GHepParticle* p) const;
85 
86  // virtual functions for individual modes
87  virtual void SimulateHadronicFinalState(GHepRecord* ev, GHepParticle* p) const = 0;
88  virtual bool HandleCompoundNucleus(GHepRecord* ev, GHepParticle* p, int mom) const = 0;
89 
90  // utility objects & params
91  mutable double fTrackingRadius;///< tracking radius for the nucleus in the current event
92  mutable TGenPhaseSpace fGenPhaseSpace; ///< a phase space generator
93  INukeHadroData * fHadroData; ///< a collection of h+N,h+A data & calculations
94  AlgFactory * fAlgf; ///< algorithm factory instance
95  const NuclearModelI * fNuclmodel; ///< nuclear model used to generate fermi momentum
96  mutable int fRemnA; ///< remnant nucleus A
97  mutable int fRemnZ; ///< remnant nucleus Z
98  mutable TLorentzVector fRemnP4; ///< P4 of remnant system
99  mutable GEvGenMode_t fGMode; ///< event generation mode (lepton+A, hadron+A, ...)
100 
101  // configuration parameters
102  double fR0; ///< effective nuclear size param
103  double fNR; ///< param multiplying the nuclear radius, determining how far to track hadrons beyond the "nuclear boundary"
104  double fNucRmvE; ///< binding energy to subtract from cascade nucleons
105  double fDelRPion; ///< factor by which Pion Compton wavelength gets multiplied to become nuclear size enhancement
106  double fDelRNucleon; ///< factor by which Nucleon Compton wavelength gets multiplied to become nuclear size enhancement
107  double fHadStep; ///< step size for intranuclear hadron transport
108  double fNucAbsFac; ///< absorption xsec correction factor (hN Mode)
109  double fNucCEXFac; ///< charge exchange xsec correction factor (hN Mode)
110  double fEPreEq; ///< threshold for pre-equilibrium reaction
111  double fFermiFac; ///< testing parameter to modify fermi momentum
112  double fFermiMomentum; ///< whether or not particle collision is pauli blocked
113  bool fDoFermi; ///< whether or not to do fermi mom.
114  bool fDoMassDiff; ///< whether or not to do mass diff. mode
115  bool fDoCompoundNucleus; ///< whether or not to do compound nucleus considerations
116 
117  double fChPionMFPScale; ///< tweaking factors for tuning
130 
131 };
132 
133 } // genie namespace
134 
135 #endif // _INTRANUKE_H_
double fFermiMomentum
whether or not particle collision is pauli blocked
Definition: Intranuke.h:112
double fNucleonFracInelScale
Definition: Intranuke.h:127
INukeHadroData * fHadroData
a collection of h+N,h+A data &amp; calculations
Definition: Intranuke.h:93
TLorentzVector fRemnP4
P4 of remnant system.
Definition: Intranuke.h:98
Defines the EventRecordVisitorI interface. Concrete implementations of this interface use the &#39;Visito...
friend class IntranukeTester
Definition: Intranuke.h:56
The INTRANUKE intranuclear hadron transport MC. Is a concrete implementation of the EventRecordVisito...
Definition: Intranuke.h:54
double fHadStep
step size for intranuclear hadron transport
Definition: Intranuke.h:107
double fNucleonFracCExScale
Definition: Intranuke.h:125
Pure abstract base class. Defines the NuclearModelI interface to be implemented by any physics model ...
Definition: NuclearModelI.h:46
double fTrackingRadius
tracking radius for the nucleus in the current event
Definition: Intranuke.h:91
virtual void ProcessEventRecord(GHepRecord *event_rec) const
Definition: Intranuke.cxx:114
double fNucleonFracAbsScale
Definition: Intranuke.h:128
void SetTrackingRadius(const GHepParticle *p) const
Definition: Intranuke.cxx:197
AlgFactory * fAlgf
algorithm factory instance
Definition: Intranuke.h:94
virtual void SimulateHadronicFinalState(GHepRecord *ev, GHepParticle *p) const =0
double fDelRNucleon
factor by which Nucleon Compton wavelength gets multiplied to become nuclear size enhancement ...
Definition: Intranuke.h:106
double fNucleonMFPScale
Definition: Intranuke.h:124
Enumeration of GENIE event generation modes.
GEvGenMode_t fGMode
event generation mode (lepton+A, hadron+A, ...)
Definition: Intranuke.h:99
double fDelRPion
factor by which Pion Compton wavelength gets multiplied to become nuclear size enhancement ...
Definition: Intranuke.h:105
double fPionFracPiProdScale
Definition: Intranuke.h:123
bool NeedsRescattering(const GHepParticle *p) const
Definition: Intranuke.cxx:212
double fPionFracInelScale
Definition: Intranuke.h:121
bool fDoCompoundNucleus
whether or not to do compound nucleus considerations
Definition: Intranuke.h:115
virtual void LoadConfig(void)=0
double fR0
effective nuclear size param
Definition: Intranuke.h:102
int fRemnA
remnant nucleus A
Definition: Intranuke.h:96
bool CanRescatter(const GHepParticle *p) const
Definition: Intranuke.cxx:231
void GenerateVertex(GHepRecord *ev) const
Definition: Intranuke.cxx:151
double fNucRmvE
binding energy to subtract from cascade nucleons
Definition: Intranuke.h:104
double fNucAbsFac
absorption xsec correction factor (hN Mode)
Definition: Intranuke.h:108
double fEPreEq
threshold for pre-equilibrium reaction
Definition: Intranuke.h:110
void TransportHadrons(GHepRecord *ev) const
Definition: Intranuke.cxx:255
double fPionFracAbsScale
Definition: Intranuke.h:122
A registry. Provides the container for algorithm configuration parameters.
Definition: Registry.h:65
double fPionFracCExScale
Definition: Intranuke.h:119
double fPionFracElasScale
Definition: Intranuke.h:120
double fNucCEXFac
charge exchange xsec correction factor (hN Mode)
Definition: Intranuke.h:109
bool fDoMassDiff
whether or not to do mass diff. mode
Definition: Intranuke.h:114
double fChPionMFPScale
tweaking factors for tuning
Definition: Intranuke.h:117
int fRemnZ
remnant nucleus Z
Definition: Intranuke.h:97
virtual bool HandleCompoundNucleus(GHepRecord *ev, GHepParticle *p, int mom) const =0
bool fDoFermi
whether or not to do fermi mom.
Definition: Intranuke.h:113
double fFermiFac
testing parameter to modify fermi momentum
Definition: Intranuke.h:111
double GenerateStep(GHepRecord *ev, GHepParticle *p) const
Definition: Intranuke.cxx:393
Singleton class to load &amp; serve hadron x-section splines used by GENIE&#39;s version of the INTRANUKE cas...
double fNucleonFracPiProdScale
Definition: Intranuke.h:129
The GENIE Algorithm Factory.
Definition: AlgFactory.h:39
TGenPhaseSpace fGenPhaseSpace
a phase space generator
Definition: Intranuke.h:92
double fNeutralPionMFPScale
Definition: Intranuke.h:118
GENIE&#39;s GHEP MC event record.
Definition: GHepRecord.h:45
STDHEP-like event record entry that can fit a particle or a nucleus.
Definition: GHepParticle.h:39
bool IsInNucleus(const GHepParticle *p) const
Definition: Intranuke.cxx:248
double fNucleonFracElasScale
Definition: Intranuke.h:126
const NuclearModelI * fNuclmodel
nuclear model used to generate fermi momentum
Definition: Intranuke.h:95
void Configure(const Registry &config)
Definition: Intranuke.cxx:425
double fNR
param multiplying the nuclear radius, determining how far to track hadrons beyond the &quot;nuclear bounda...
Definition: Intranuke.h:103