GENIEGenerator
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Pages
INukeUtils.h
Go to the documentation of this file.
1 //____________________________________________________________________________
2 /*!
3 
4 \namespace genie::intranuke
5 
6 \brief INTRANUKE utilities
7 
8 \author Jim Dobson <j.dobson07 \at imperial.ac.uk>
9  Imperial College London
10 
11  Costas Andreopoulos <c.andreopoulos \at cern.ch>
12  University of Liverpool
13 
14  Aaron Meyer <asm58 \at pitt.edu>
15  Pittsburgh University
16 
17 \created Mar 03, 2009
18 
19 \cpright Copyright (c) 2003-2024, The GENIE Collaboration
20  For the full text of the license visit http://copyright.genie-mc.org
21 
22 */
23 //____________________________________________________________________________
24 
25 #ifndef _INTRANUKE_UTILS_H_
26 #define _INTRANUKE_UTILS_H_
27 
28 #include <TGenPhaseSpace.h>
29 
33 
34 class TLorentzVector;
35 
36 namespace genie {
37 
38 class GHepRecord;
39 class GHepParticle;
40 class PDGCodeList;
41 
42 namespace utils {
43 namespace intranuke
44 {
45  //! Hadron survival probability
46  double ProbSurvival(
47  int pdgc, const TLorentzVector & x4, const TLorentzVector & p4, double A,
48  double Z, double mfp_scale_factor=1.0,
49  double nRpi=0.5, double nRnuc=1.0, double NR=3, double R0=1.4);
50 
51  //! Mean free path (pions, nucleons)
52  double MeanFreePath(
53  int pdgc, const TLorentzVector & x4, const TLorentzVector & p4, double A,
54  double Z, double nRpi=0.5, double nRnuc=1.0);
55 
56  //! Mean free path (Delta++ **test**)
57  double MeanFreePath_Delta(
58  int pdgc, const TLorentzVector & x4, const TLorentzVector & p4, double A);
59 
60  //! Distance to exit
61  double Dist2Exit(
62  const TLorentzVector & x4, const TLorentzVector & p4,
63  double A, double NR=3, double R0=1.4);
64 
65  //! Distance to exit
66  double Dist2ExitMFP(
67  int pdgc, const TLorentzVector & x4, const TLorentzVector & p4,
68  double A, double Z, double NR=3, double R0=1.4);
69 
70  //! Step particle
71  void StepParticle(
72  GHepParticle * p, double step, double nuclear_radius=-1.);
73 
74 
75  //! Intranuke utility functions
76 
77  bool TwoBodyCollision(
78  GHepRecord* ev, int pcode, int tcode, int scode, int s2code, double C3CM, GHepParticle* p,
79  GHepParticle* t, int &RemnA, int &RemnZ, TLorentzVector &RemnP4, EINukeMode mode=kIMdHA);
80 
81  bool TwoBodyKinematics(
82  double M3, double M4, TLorentzVector tP1L, TLorentzVector tP2L,
83  TLorentzVector &tP3L, TLorentzVector &tP4L, double C3CM, TLorentzVector &RemnP4, double bindE=0);
84 
86  GHepRecord* ev, GHepParticle* p, int tcode, GHepParticle* s1, GHepParticle* s2, GHepParticle* s3,
87  bool DoFermi=false, double FermiFac=0, double FermiMomentum=0, const NuclearModelI* Nuclmodel=(const NuclearModelI*)0);
88 
89  bool PionProduction(
90  GHepRecord* ev, GHepParticle* p, GHepParticle* s1, GHepParticle* s2, GHepParticle* s3, int &RemnA, int &RemnZ,
91  TLorentzVector &RemnP4,bool DoFermi, double FermiFac, double FermiMomentum, const NuclearModelI* Nuclmodel);
92 
93  double CalculateEta(
94  double Minc, double ke, double Mtarg, double Mtwopart, double Mpi);
95 
96  void Equilibrium(
97  GHepRecord* ev, GHepParticle* p, int &RemnA, int &RemnZ, TLorentzVector &RemnP4, bool DoFermi,
98  double FermiFac, const NuclearModelI* Nuclmodel, double NucRmvE, EINukeMode mode=kIMdHN);
99 
100  void PreEquilibrium(
101  GHepRecord* ev, GHepParticle* p, int &RemnA, int &RemnZ, TLorentzVector &RemnP4, bool DoFermi,
102  double FermiFac, const NuclearModelI* Nuclmodel, double NucRmvE, EINukeMode mode=kIMdHN);
103 
104 
105  //! general phase space decay method
106  bool PhaseSpaceDecay (
107  GHepRecord* ev, GHepParticle* p, const PDGCodeList & pdgv, TLorentzVector &RemnP4,
108  double NucRmvE, EINukeMode mode=kIMdHA);
109 
110 } // intranuke namespace
111 } // utils namespace
112 } // genie namespace
113 
114 
115 #endif // _INTRANUKE_UTILS_H_
bool ThreeBodyKinematics(GHepRecord *ev, GHepParticle *p, int tcode, GHepParticle *s1, GHepParticle *s2, GHepParticle *s3, bool DoFermi=false, double FermiFac=0, double FermiMomentum=0, const NuclearModelI *Nuclmodel=(const NuclearModelI *) 0)
Definition: INukeUtils.cxx:949
double MeanFreePath_Delta(int pdgc, const TLorentzVector &x4, const TLorentzVector &p4, double A)
Mean free path (Delta++ test)
Definition: INukeUtils.cxx:170
Pure abstract base class. Defines the NuclearModelI interface to be implemented by any physics model ...
Definition: NuclearModelI.h:46
EINukeMode
Definition: INukeMode.h:29
double Dist2ExitMFP(int pdgc, const TLorentzVector &x4, const TLorentzVector &p4, double A, double Z, double NR=3, double R0=1.4)
Distance to exit.
Definition: INukeUtils.cxx:306
A list of PDG codes.
Definition: PDGCodeList.h:32
static constexpr double A
Definition: Units.h:74
bool PhaseSpaceDecay(GHepRecord *ev, GHepParticle *p, const PDGCodeList &pdgv, TLorentzVector &RemnP4, double NucRmvE, EINukeMode mode=kIMdHA)
general phase space decay method
bool PionProduction(GHepRecord *ev, GHepParticle *p, GHepParticle *s1, GHepParticle *s2, GHepParticle *s3, int &RemnA, int &RemnZ, TLorentzVector &RemnP4, bool DoFermi, double FermiFac, double FermiMomentum, const NuclearModelI *Nuclmodel)
double ProbSurvival(int pdgc, const TLorentzVector &x4, const TLorentzVector &p4, double A, double Z, double mfp_scale_factor=1.0, double nRpi=0.5, double nRnuc=1.0, double NR=3, double R0=1.4)
Hadron survival probability.
Definition: INukeUtils.cxx:218
bool TwoBodyKinematics(double M3, double M4, TLorentzVector tP1L, TLorentzVector tP2L, TLorentzVector &tP3L, TLorentzVector &tP4L, double C3CM, TLorentzVector &RemnP4, double bindE=0)
Definition: INukeUtils.cxx:754
double MeanFreePath(int pdgc, const TLorentzVector &x4, const TLorentzVector &p4, double A, double Z, double nRpi=0.5, double nRnuc=1.0)
Mean free path (pions, nucleons)
Definition: INukeUtils.cxx:70
double CalculateEta(double Minc, double ke, double Mtarg, double Mtwopart, double Mpi)
double Dist2Exit(const TLorentzVector &x4, const TLorentzVector &p4, double A, double NR=3, double R0=1.4)
Distance to exit.
Definition: INukeUtils.cxx:279
void StepParticle(GHepParticle *p, double step, double nuclear_radius=-1.)
Step particle.
Definition: INukeUtils.cxx:341
void Equilibrium(GHepRecord *ev, GHepParticle *p, int &RemnA, int &RemnZ, TLorentzVector &RemnP4, bool DoFermi, double FermiFac, const NuclearModelI *Nuclmodel, double NucRmvE, EINukeMode mode=kIMdHN)
Definition: INukeUtils.cxx:542
GENIE&#39;s GHEP MC event record.
Definition: GHepRecord.h:45
void PreEquilibrium(GHepRecord *ev, GHepParticle *p, int &RemnA, int &RemnZ, TLorentzVector &RemnP4, bool DoFermi, double FermiFac, const NuclearModelI *Nuclmodel, double NucRmvE, EINukeMode mode=kIMdHN)
Definition: INukeUtils.cxx:395
STDHEP-like event record entry that can fit a particle or a nucleus.
Definition: GHepParticle.h:39
bool TwoBodyCollision(GHepRecord *ev, int pcode, int tcode, int scode, int s2code, double C3CM, GHepParticle *p, GHepParticle *t, int &RemnA, int &RemnZ, TLorentzVector &RemnP4, EINukeMode mode=kIMdHA)
Intranuke utility functions.
Definition: INukeUtils.cxx:625