GENIEGenerator
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Pages
INukeUtils2018.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_2018_H_
26 #define _INTRANUKE_UTILS_2018_H_
27 
28 #include <TGenPhaseSpace.h>
29 
34 
35 class TLorentzVector;
36 
37 namespace genie {
38 
39 class GHepRecord;
40 class GHepParticle;
41 class Intranuke2018;
42 class PDGCodeList;
43 
44 namespace utils {
45 namespace intranuke2018
46 {
47  //! Hadron survival probability
48  double ProbSurvival(
49  int pdgc, const TLorentzVector & x4, const TLorentzVector & p4, double A,
50  double Z, double mfp_scale_factor, const Intranuke2018& fsi_model );
51 
52  //! Mean free path (pions, nucleons)
53  double MeanFreePath(
54  int pdgc, const TLorentzVector & x4, const TLorentzVector & p4, double A,
55  double Z, double nRpi=0.5, double nRnuc=1.0, const bool useOset = false, const bool altOset = false, const bool xsecNNCorr = false, string INukeMode = "XX2018");
56 
57  //! Mean free path (Delta++ **test**)
58  double MeanFreePath_Delta(
59  int pdgc, const TLorentzVector & x4, const TLorentzVector & p4, double A );
60 
61  //! Distance to exit
62  double Dist2Exit(
63  const TLorentzVector & x4, const TLorentzVector & p4,
64  double A, double NR=3, double R0=1.4);
65 
66  //! Distance to exit
67  double Dist2ExitMFP(
68  int pdgc, const TLorentzVector & x4, const TLorentzVector & p4,
69  double A, double Z, double NR=3, double R0=1.4);
70 
71  //! Step particle
72  void StepParticle(
73  GHepParticle * p, double step, double nuclear_radius=-1.);
74 
75 
76  //! Intranuke utility functions
77 
78  bool TwoBodyCollision(
79  GHepRecord* ev, int pcode, int tcode, int scode, int s2code, double C3CM, GHepParticle* p,
80  GHepParticle* t, int &RemnA, int &RemnZ, TLorentzVector &RemnP4, EINukeMode mode=kIMdHA);
81 
82  bool TwoBodyKinematics(
83  double M3, double M4, TLorentzVector tP1L, TLorentzVector tP2L,
84  TLorentzVector &tP3L, TLorentzVector &tP4L, double C3CM, TLorentzVector &RemnP4, double bindE=0);
85 
87  GHepRecord* ev, GHepParticle* p, int tcode, GHepParticle* s1, GHepParticle* s2, GHepParticle* s3,
88  bool DoFermi=false, double FermiFac=0, double FermiMomentum=0, const NuclearModelI* Nuclmodel=(const NuclearModelI*)0);
89 
90  bool PionProduction(
91  GHepRecord* ev, GHepParticle* p, GHepParticle* s1, GHepParticle* s2, GHepParticle* s3, int &RemnA, int &RemnZ,
92  TLorentzVector &RemnP4,bool DoFermi, double FermiFac, double FermiMomentum, const NuclearModelI* Nuclmodel);
93 
94  double CalculateEta(
95  double Minc, double ke, double Mtarg, double Mtwopart, double Mpi);
96 
97  void Equilibrium(
98  GHepRecord* ev, GHepParticle* p, int &RemnA, int &RemnZ, TLorentzVector &RemnP4, bool DoFermi,
99  double FermiFac, const NuclearModelI* Nuclmodel, double NucRmvE, EINukeMode mode=kIMdHN);
100 
101  void PreEquilibrium(
102  GHepRecord* ev, GHepParticle* p, int &RemnA, int &RemnZ, TLorentzVector &RemnP4, bool DoFermi,
103  double FermiFac, const NuclearModelI* Nuclmodel, double NucRmvE, EINukeMode mode=kIMdHN);
104 
105 
106  //! general phase space decay method
107  bool PhaseSpaceDecay (
108  GHepRecord* ev, GHepParticle* p, const PDGCodeList & pdgv, TLorentzVector &RemnP4,
109  double NucRmvE, EINukeMode mode=kIMdHA);
110 
111  // calculate pion-nucleon total cross section based on Oset model
112  // use only for pion with kinetic energy up to 350 MeV
113  double sigmaTotalOset (const double &pionKineticEnergy, const double &density,
114  const int &pionPDG, const double &protonFraction,
115  const bool &isTableChosen = true
116  );
117 
118 } // intranuke namespace
119 } // utils namespace
120 } // genie namespace
121 
122 
123 #endif // _INTRANUKE_UTILS_2018_H_
double MeanFreePath_Delta(int pdgc, const TLorentzVector &x4, const TLorentzVector &p4, double A)
Mean free path (Delta++ test)
void PreEquilibrium(GHepRecord *ev, GHepParticle *p, int &RemnA, int &RemnZ, TLorentzVector &RemnP4, bool DoFermi, double FermiFac, const NuclearModelI *Nuclmodel, double NucRmvE, EINukeMode mode=kIMdHN)
bool PhaseSpaceDecay(GHepRecord *ev, GHepParticle *p, const PDGCodeList &pdgv, TLorentzVector &RemnP4, double NucRmvE, EINukeMode mode=kIMdHA)
general phase space decay method
void StepParticle(GHepParticle *p, double step, double nuclear_radius=-1.)
Step particle.
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)
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)
Pure abstract base class. Defines the NuclearModelI interface to be implemented by any physics model ...
Definition: NuclearModelI.h:46
EINukeMode
Definition: INukeMode.h:29
A list of PDG codes.
Definition: PDGCodeList.h:32
double Dist2Exit(const TLorentzVector &x4, const TLorentzVector &p4, double A, double NR=3, double R0=1.4)
Distance to exit.
static constexpr double A
Definition: Units.h:74
bool TwoBodyKinematics(double M3, double M4, TLorentzVector tP1L, TLorentzVector tP2L, TLorentzVector &tP3L, TLorentzVector &tP4L, double C3CM, TLorentzVector &RemnP4, double bindE=0)
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.
double CalculateEta(double Minc, double ke, double Mtarg, double Mtwopart, double Mpi)
double MeanFreePath(int pdgc, const TLorentzVector &x4, const TLorentzVector &p4, double A, double Z, double nRpi=0.5, double nRnuc=1.0, const bool useOset=false, const bool altOset=false, const bool xsecNNCorr=false, string INukeMode="XX2018")
Mean free path (pions, nucleons)
void Equilibrium(GHepRecord *ev, GHepParticle *p, int &RemnA, int &RemnZ, TLorentzVector &RemnP4, bool DoFermi, double FermiFac, const NuclearModelI *Nuclmodel, double NucRmvE, EINukeMode mode=kIMdHN)
double ProbSurvival(int pdgc, const TLorentzVector &x4, const TLorentzVector &p4, double A, double Z, double mfp_scale_factor, const Intranuke2018 &fsi_model)
Hadron survival probability.
double sigmaTotalOset(const double &pionKineticEnergy, const double &density, const int &pionPDG, const double &protonFraction, const bool &isTableChosen=true)
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
double Dist2ExitMFP(int pdgc, const TLorentzVector &x4, const TLorentzVector &p4, double A, double Z, double NR=3, double R0=1.4)
Distance to exit.