Intranuke2014.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_2014_H_
31 #define _INTRANUKE_2014_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 INukeHadroData2014;
50 class PDGCodeList;
51 class HNIntranuke2014;
52 class HAIntranuke2014;
53 
55 
56 friend class IntranukeTester;
57 
58 public :
59  Intranuke2014();
60  Intranuke2014(string name);
61  Intranuke2014(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 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 int 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  INukeHadroData2014 * fHadroData2014; ///< 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 fFreeStep; ///< produced particle free stem, in fm
113  double fFermiMomentum; ///< whether or not particle collision is pauli blocked
114  bool fDoFermi; ///< whether or not to do fermi mom.
115  bool fDoMassDiff; ///< whether or not to do mass diff. mode
116  bool fDoCompoundNucleus; ///< whether or not to do compound nucleus considerations
117 };
118 
119 } // genie namespace
120 
121 #endif // _INTRANUKE_2014_H_
void GenerateVertex(GHepRecord *ev) const
#include "Numerical/GSFunc.h"
Definition: AlgCmp.h:26
AlgFactory * fAlgf
algorithm factory instance
Definition: Intranuke2014.h:94
double fNR
param multiplying the nuclear radius, determining how far to track hadrons beyond the "nuclear bounda...
Defines the EventRecordVisitorI interface. Concrete implementations of this interface use the &#39;Visito...
double fEPreEq
threshold for pre-equilibrium reaction
double fR0
effective nuclear size param
int fRemnZ
remnant nucleus Z
Definition: Intranuke2014.h:97
TGenPhaseSpace fGenPhaseSpace
a phase space generator
Definition: Intranuke2014.h:92
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
INukeHadroData2014 * fHadroData2014
a collection of h+N,h+A data & calculations
Definition: Intranuke2014.h:93
void TransportHadrons(GHepRecord *ev) const
double fFermiMomentum
whether or not particle collision is pauli blocked
double GenerateStep(GHepRecord *ev, GHepParticle *p) const
virtual void ProcessEventRecord(GHepRecord *event_rec) const
double fTrackingRadius
tracking radius for the nucleus in the current event
Definition: Intranuke2014.h:91
virtual int HandleCompoundNucleus(GHepRecord *ev, GHepParticle *p, int mom) const =0
int fRemnA
remnant nucleus A
Definition: Intranuke2014.h:96
Enumeration of GENIE event generation modes.
double fDelRPion
factor by which Pion Compton wavelength gets multiplied to become nuclear size enhancement ...
double fFreeStep
produced particle free stem, in fm
const NuclearModelI * fNuclmodel
nuclear model used to generate fermi momentum
Definition: Intranuke2014.h:95
virtual void SimulateHadronicFinalState(GHepRecord *ev, GHepParticle *p) const =0
friend class IntranukeTester
Definition: Intranuke2014.h:56
bool CanRescatter(const GHepParticle *p) const
double fFermiFac
testing parameter to modify fermi momentum
p
Definition: test.py:228
double fNucCEXFac
charge exchange xsec correction factor (hN Mode)
double fNucRmvE
binding energy to subtract from cascade nucleons
bool NeedsRescattering(const GHepParticle *p) const
bool fDoCompoundNucleus
whether or not to do compound nucleus considerations
A registry. Provides the container for algorithm configuration parameters.
Definition: Registry.h:66
bool fDoMassDiff
whether or not to do mass diff. mode
GEvGenMode_t fGMode
event generation mode (lepton+A, hadron+A, ...)
Definition: Intranuke2014.h:99
void SetTrackingRadius(const GHepParticle *p) const
virtual void LoadConfig(void)=0
void Configure(const Registry &config)
Configure the algorithm.
double fDelRNucleon
factor by which Nucleon Compton wavelength gets multiplied to become nuclear size enhancement ...
The GENIE Algorithm Factory.
Definition: AlgFactory.h:40
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 fNucAbsFac
absorption xsec correction factor (hN Mode)
double fHadStep
step size for intranuclear hadron transport
TLorentzVector fRemnP4
P4 of remnant system.
Definition: Intranuke2014.h:98
bool fDoFermi
whether or not to do fermi mom.