Intranuke2015.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-2017, GENIE Neutrino MC Generator 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_2015_H_
31 #define _INTRANUKE_2015_H_
32 
33 #include <TGenPhaseSpace.h>
34 
36 
37 #include "Algorithm/AlgFactory.h"
39 #include "Conventions/GMode.h"
42 
43 class TLorentzVector;
44 class TVector3;
45 
46 namespace genie {
47 
48 class GHepParticle;
49 class INukeHadroData2015;
50 class PDGCodeList;
51 class HNIntranuke2015;
52 class HAIntranuke2015;
53 
55 
56 friend class IntranukeTester;
57 
58 public :
59  Intranuke2015();
60  Intranuke2015(string name);
61  Intranuke2015(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  void Configure (const Registry & config);
70  void Configure (string param_set);
71 
72  virtual string GetINukeMode() const {return "XX2015";};
73 
74 protected:
75 
76  // methods for loading configuration
77  virtual void LoadConfig (void)=0;
78 
79  // general methods for the cascade mc structure
80  void TransportHadrons (GHepRecord * ev) const;
81  void GenerateVertex (GHepRecord * ev) const;
82  bool NeedsRescattering (const GHepParticle* p) const;
83  bool CanRescatter (const GHepParticle* p) const;
84  bool IsInNucleus (const GHepParticle* p) const;
85  void SetTrackingRadius (const GHepParticle* p) const;
86  double GenerateStep (GHepRecord* ev, GHepParticle* p) const;
87 
88  // virtual functions for individual modes
89  virtual void SimulateHadronicFinalState(GHepRecord* ev, GHepParticle* p) const = 0;
90  virtual int HandleCompoundNucleus(GHepRecord* ev, GHepParticle* p, int mom) const = 0;
91 
92  // utility objects & params
93  mutable double fTrackingRadius;///< tracking radius for the nucleus in the current event
94  mutable TGenPhaseSpace fGenPhaseSpace; ///< a phase space generator
95  INukeHadroData2015 * fHadroData2015; ///< a collection of h+N,h+A data & calculations
96  AlgFactory * fAlgf; ///< algorithm factory instance
97  const NuclearModelI * fNuclmodel; ///< nuclear model used to generate fermi momentum
98  mutable int fRemnA; ///< remnant nucleus A
99  mutable int fRemnZ; ///< remnant nucleus Z
100  mutable TLorentzVector fRemnP4; ///< P4 of remnant system
101  mutable GEvGenMode_t fGMode; ///< event generation mode (lepton+A, hadron+A, ...)
102 
103  // configuration parameters
104  double fR0; ///< effective nuclear size param
105  double fNR; ///< param multiplying the nuclear radius, determining how far to track hadrons beyond the "nuclear boundary"
106  double fNucRmvE; ///< binding energy to subtract from cascade nucleons
107  double fDelRPion; ///< factor by which Pion Compton wavelength gets multiplied to become nuclear size enhancement
108  double fDelRNucleon; ///< factor by which Nucleon Compton wavelength gets multiplied to become nuclear size enhancement
109  double fHadStep; ///< step size for intranuclear hadron transport
110  double fNucAbsFac; ///< absorption xsec correction factor (hN Mode)
111  double fNucCEXFac; ///< charge exchange xsec correction factor (hN Mode)
112  double fEPreEq; ///< threshold for pre-equilibrium reaction
113  double fFermiFac; ///< testing parameter to modify fermi momentum
114  double fFreeStep; ///< produced particle free stem, in fm
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 };
124 
125 } // genie namespace
126 
127 #endif // _INTRANUKE_2015_H_
#include "Numerical/GSFunc.h"
Definition: AlgCmp.h:26
bool CanRescatter(const GHepParticle *p) const
bool fUseOset
Oset model for low energy pion in hN.
double fR0
effective nuclear size param
Defines the EventRecordVisitorI interface. Concrete implementations of this interface use the &#39;Visito...
double fNucRmvE
binding energy to subtract from cascade nucleons
virtual string GetINukeMode() const
Definition: Intranuke2015.h:72
bool fXsecNNCorr
use nuclear medium correction for NN cross section
TGenPhaseSpace fGenPhaseSpace
a phase space generator
Definition: Intranuke2015.h:94
double fFreeStep
produced particle free stem, in fm
bool IsInNucleus(const GHepParticle *p) const
Pure abstract base class. Defines the NuclearModelI interface to be implemented by any physics model ...
Definition: NuclearModelI.h:42
double fTrackingRadius
tracking radius for the nucleus in the current event
Definition: Intranuke2015.h:93
double fEPreEq
threshold for pre-equilibrium reaction
double fFermiMomentum
whether or not particle collision is pauli blocked
bool fDoMassDiff
whether or not to do mass diff. mode
void GenerateVertex(GHepRecord *ev) const
double fNR
param multiplying the nuclear radius, determining how far to track hadrons beyond the "nuclear bounda...
void Configure(const Registry &config)
Configure the algorithm.
INukeHadroData2015 * fHadroData2015
a collection of h+N,h+A data & calculations
Definition: Intranuke2015.h:95
Enumeration of GENIE event generation modes.
bool fDoCompoundNucleus
whether or not to do compound nucleus considerations
virtual void SimulateHadronicFinalState(GHepRecord *ev, GHepParticle *p) const =0
const NuclearModelI * fNuclmodel
nuclear model used to generate fermi momentum
Definition: Intranuke2015.h:97
bool fDoFermi
whether or not to do fermi mom.
AlgFactory * fAlgf
algorithm factory instance
Definition: Intranuke2015.h:96
virtual void LoadConfig(void)=0
double fFermiFac
testing parameter to modify fermi momentum
void TransportHadrons(GHepRecord *ev) const
double GenerateStep(GHepRecord *ev, GHepParticle *p) const
virtual int HandleCompoundNucleus(GHepRecord *ev, GHepParticle *p, int mom) const =0
p
Definition: test.py:228
A registry. Provides the container for algorithm configuration parameters.
Definition: Registry.h:66
bool NeedsRescattering(const GHepParticle *p) const
virtual void ProcessEventRecord(GHepRecord *event_rec) const
GEvGenMode_t fGMode
event generation mode (lepton+A, hadron+A, ...)
bool fAltOset
NuWro&#39;s table-based implementation (not recommended)
int fRemnZ
remnant nucleus Z
Definition: Intranuke2015.h:99
TLorentzVector fRemnP4
P4 of remnant system.
The GENIE Algorithm Factory.
Definition: AlgFactory.h:40
void SetTrackingRadius(const GHepParticle *p) const
double fDelRNucleon
factor by which Nucleon Compton wavelength gets multiplied to become nuclear size enhancement ...
int fRemnA
remnant nucleus A
Definition: Intranuke2015.h:98
GENIE&#39;s GHEP MC event record.
Definition: GHepRecord.h:46
STDHEP-like event record entry that can fit a particle or a nucleus.
Definition: GHepParticle.h:40
double fHadStep
step size for intranuclear hadron transport
friend class IntranukeTester
Definition: Intranuke2015.h:56
double fNucAbsFac
absorption xsec correction factor (hN Mode)
double fDelRPion
factor by which Pion Compton wavelength gets multiplied to become nuclear size enhancement ...
double fNucCEXFac
charge exchange xsec correction factor (hN Mode)