GENIEGenerator
Loading...
Searching...
No Matches
INukeUtils2018.h
Go to the documentation of this file.
1//____________________________________________________________________________
2/*!
3
4\namespace genie::intranuke
5
6\brief INTRANUKE utilities:
7 mean free path methods used to determine where hadron interactions happen
8 2-body scattering and pion production kinematics.
9 Phase space 'decay' of pseudostates, e.g. multinucleon, used in pion absorption and nucleon knowckout
10 Reweighting methods
11
12\author Jim Dobson <j.dobson07 \at imperial.ac.uk>
13 Imperial College London
14
15 Costas Andreopoulos <c.andreopoulos \at cern.ch>
16 University of Liverpool
17
18 Aaron Meyer <asm58 \at pitt.edu>
19 Pittsburgh University
20
21\created Mar 03, 2009
22
23\cpright Copyright (c) 2003-2025, The GENIE Collaboration
24 For the full text of the license visit http://copyright.genie-mc.org
25
26*/
27//____________________________________________________________________________
28
29#ifndef _INTRANUKE_UTILS_2018_H_
30#define _INTRANUKE_UTILS_2018_H_
31
32#include <TGenPhaseSpace.h>
33
38
39class TLorentzVector;
40
41namespace genie {
42
43class GHepRecord;
44class GHepParticle;
45class Intranuke2018;
46class PDGCodeList;
47
48namespace utils {
50{
51 //! Hadron survival probability
52 double ProbSurvival(
53 int pdgc, const TLorentzVector & x4, const TLorentzVector & p4, double A,
54 double Z, double mfp_scale_factor, const Intranuke2018& fsi_model );
55
56 //! Mean free path (pions, nucleons)
57 double MeanFreePath(
58 int pdgc, const TLorentzVector & x4, const TLorentzVector & p4, double A,
59 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");
60
61 //! Mean free path (Delta++ **test**)
62 double MeanFreePath_Delta(
63 int pdgc, const TLorentzVector & x4, const TLorentzVector & p4, double A );
64
65 //! Distance to exit
66 double Dist2Exit(
67 const TLorentzVector & x4, const TLorentzVector & p4,
68 double A, double NR=3, double R0=1.4);
69
70 //! Distance to exit
71 double Dist2ExitMFP(
72 int pdgc, const TLorentzVector & x4, const TLorentzVector & p4,
73 double A, double Z, double NR=3, double R0=1.4);
74
75 //! Step particle
76 void StepParticle(
77 GHepParticle * p, double step, double nuclear_radius=-1.);
78
79
80 //! Intranuke utility functions
81
83 GHepRecord* ev, int pcode, int tcode, int scode, int s2code, double C3CM, GHepParticle* p,
84 GHepParticle* t, int &RemnA, int &RemnZ, TLorentzVector &RemnP4, EINukeMode mode=kIMdHA);
85
87 double M3, double M4, TLorentzVector tP1L, TLorentzVector tP2L,
88 TLorentzVector &tP3L, TLorentzVector &tP4L, double C3CM, TLorentzVector &RemnP4, double bindE=0);
89
91 GHepRecord* ev, GHepParticle* p, int tcode, GHepParticle* s1, GHepParticle* s2, GHepParticle* s3,
92 bool DoFermi=false, double FermiFac=0, double FermiMomentum=0, const NuclearModelI* Nuclmodel=(const NuclearModelI*)0);
93
94 bool PionProduction(
95 GHepRecord* ev, GHepParticle* p, GHepParticle* s1, GHepParticle* s2, GHepParticle* s3, int &RemnA, int &RemnZ,
96 TLorentzVector &RemnP4,bool DoFermi, double FermiFac, double FermiMomentum, const NuclearModelI* Nuclmodel);
97
98 double CalculateEta(
99 double Minc, double ke, double Mtarg, double Mtwopart, double Mpi);
100
101 void Equilibrium(
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 void PreEquilibrium(
106 GHepRecord* ev, GHepParticle* p, int &RemnA, int &RemnZ, TLorentzVector &RemnP4, bool DoFermi,
107 double FermiFac, const NuclearModelI* Nuclmodel, double NucRmvE, EINukeMode mode=kIMdHN);
108
109
110 //! general phase space decay method
111 bool PhaseSpaceDecay (
112 GHepRecord* ev, GHepParticle* p, const PDGCodeList & pdgv, TLorentzVector &RemnP4,
113 double NucRmvE, EINukeMode mode=kIMdHA);
114
115 // calculate pion-nucleon total cross section based on Oset model
116 // use only for pion with kinetic energy up to 350 MeV
117 double sigmaTotalOset (const double &pionKineticEnergy, const double &density,
118 const int &pionPDG, const double &protonFraction,
119 const bool &isTableChosen = true
120 );
121
122} // intranuke namespace
123} // utils namespace
124} // genie namespace
125
126
127#endif // _INTRANUKE_UTILS_2018_H_
STDHEP-like event record entry that can fit a particle or a nucleus.
GENIE's GHEP MC event record.
Definition GHepRecord.h:45
Pure abstract base class. Defines the NuclearModelI interface to be implemented by any physics model ...
A list of PDG codes.
Definition PDGCodeList.h:32
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 TwoBodyKinematics(double M3, double M4, TLorentzVector tP1L, TLorentzVector tP2L, TLorentzVector &tP3L, TLorentzVector &tP4L, double C3CM, TLorentzVector &RemnP4, double bindE=0)
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)
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)
void Equilibrium(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
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 MeanFreePath_Delta(int pdgc, const TLorentzVector &x4, const TLorentzVector &p4, double A)
Mean free path (Delta++ test)
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)
double Dist2Exit(const TLorentzVector &x4, const TLorentzVector &p4, double A, double NR=3, double R0=1.4)
Distance to exit.
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)
void StepParticle(GHepParticle *p, double step, double nuclear_radius=-1.)
Step particle.
double Dist2ExitMFP(int pdgc, const TLorentzVector &x4, const TLorentzVector &p4, double A, double Z, double NR=3, double R0=1.4)
Distance to exit.
double CalculateEta(double Minc, double ke, double Mtarg, double Mtwopart, double Mpi)
Root of GENIE utility namespaces.
THE MAIN GENIE PROJECT NAMESPACE
Definition AlgCmp.h:25
EINukeMode
Definition INukeMode.h:29
@ kIMdHN
Definition INukeMode.h:32
@ kIMdHA
Definition INukeMode.h:33