ECCE @ EIC Software
Reference for
ECCE @ EIC
simulation and reconstruction software on GitHub
Home page
Related Pages
Modules
Namespaces
Classes
Files
External Links
File List
File Members
All
Classes
Namespaces
Files
Functions
Variables
Typedefs
Enumerations
Enumerator
Friends
Macros
Groups
Pages
G4QuasiElRatios.hh
Go to the documentation of this file.
Or view
the newest version in sPHENIX GitHub for file G4QuasiElRatios.hh
1
//
2
// ********************************************************************
3
// * License and Disclaimer *
4
// * *
5
// * The Geant4 software is copyright of the Copyright Holders of *
6
// * the Geant4 Collaboration. It is provided under the terms and *
7
// * conditions of the Geant4 Software License, included in the file *
8
// * LICENSE and available at http://cern.ch/geant4/license . These *
9
// * include a list of copyright holders. *
10
// * *
11
// * Neither the authors of this software system, nor their employing *
12
// * institutes,nor the agencies providing financial support for this *
13
// * work make any representation or warranty, express or implied, *
14
// * regarding this software system or assume any liability for its *
15
// * use. Please see the license in the file LICENSE and URL above *
16
// * for the full disclaimer and the limitation of liability. *
17
// * *
18
// * This code implementation is the result of the scientific and *
19
// * technical work of the GEANT4 collaboration. *
20
// * By using, copying, modifying or distributing the software (or *
21
// * any work based on the software) you agree to acknowledge its *
22
// * use in resulting scientific publications, and indicate your *
23
// * acceptance of all terms of the Geant4 Software license. *
24
// ********************************************************************
25
//
26
//
27
//
28
//
29
// GEANT4 physics class: G4QuasiElRatios -- header file
30
// M.V. Kossov, ITEP(Moscow), 24-OCT-01
31
// The last update: M.V. Kossov, CERN/ITEP (Moscow) 15-Oct-2006
32
// ----------------------------------------------------------------------
33
// This class has been extracted from the CHIPS model.
34
// All the dependencies on CHIPS classes have been removed.
35
// Short description: Provides percentage of quasi-free and quasi-elastic
36
// reactions in the inelastic reactions.
37
// ----------------------------------------------------------------------
38
39
#ifndef G4QuasiElRatios_h
40
#define G4QuasiElRatios_h 1
41
42
#include "
globals.hh
"
43
#include "
G4ios.hh
"
44
#include "
Randomize.hh
"
45
#include <vector>
46
#include "
G4LorentzVector.hh
"
47
48
#include "
G4ChipsProtonElasticXS.hh
"
49
#include "
G4ChipsNeutronElasticXS.hh
"
50
51
52
class
G4QuasiElRatios
53
{
54
55
public
:
56
G4QuasiElRatios
();
// Constructor
57
58
~G4QuasiElRatios
();
// Destructor
59
60
// Pair(QuasiFree/Inelastic,QuasiElastic/QuasiFree)
61
std::pair<G4double,G4double>
GetRatios
(
G4double
pIU,
G4int
prPDG,
G4int
tgZ,
G4int
tgN);
62
// ChargeExchange/QuasiElastic factor pair<for protons (Z), for neutrons(N)>
63
std::pair<G4double,G4double>
GetChExFactor
(
G4double
pIU,
G4int
pPDG,
G4int
Z
,
G4int
N
);
64
// scatter (pPDG,p4M) on a virtual nucleon (NPDG,N4M), result: final pair(newN4M,newp4M)
65
// if(newN4M.e()==0.) - below threshold, XS=0, no scattering of the projectile happened
66
std::pair<G4LorentzVector,G4LorentzVector>
Scatter
(
G4int
NPDG,
G4LorentzVector
N4M,
67
G4int
pPDG,
G4LorentzVector
p4M);
68
// ChExer (pPDG,p4M) on a virtual nucleon (NPDG,N4M), result: final pair(newN4M,newp4M)
69
// if(newN4M.e()==0.) - keep projectile, XS=0, no interaction of the progectile happened
70
// User should himself change the charge (PDG) (e.g. pn->np, pi+n->pi0p, pi-p->pi0n etc.)
71
// Recepy: change target n to p or taget p to n and conserve enrgy, changing projectile
72
// Do not use for the nucleon, as it is already included in quasielastic, and for pi0.
73
std::pair<G4LorentzVector,G4LorentzVector>
ChExer
(
G4int
NPDG,
G4LorentzVector
N4M,
74
G4int
pPDG,
G4LorentzVector
p4M);
75
// Mean hN El and Tot XS(IU) for the isotopic (Z,N): on p -> (Z=1,N=0), on n -> (Z=0,N=1)
76
std::pair<G4double,G4double>
GetElTot
(
G4double
pIU,
G4int
hPDG,
G4int
Z,
G4int
N);
//(IU)
77
78
// Calculate ChEx/El ratio coefficient (p is in independent units, (Z,N) is a target)
79
G4double
ChExElCoef
(
G4double
p
,
G4int
Z,
G4int
N,
G4int
pPDG);
80
81
// For hadron PDG with momentum Mom (GeV/c) on F(p/n) calculate <sig_el,sig_tot> pair(mb)
82
// F=true corresponds to the Nroton target, F=false corresponds to the Proton target
83
std::pair<G4double,G4double>
GetElTotXS
(
G4double
Mom,
G4int
PDG,
G4bool
F
);
//<sigEl,sigT>
84
std::pair<G4double,G4double>
FetchElTot
(
G4double
pGeV,
G4int
PDG,
G4bool
F);
//<E,T>fromAMDB
85
86
G4bool
RelDecayIn2
(
G4LorentzVector
& theMomentum,
G4LorentzVector
& f4Mom,
87
G4LorentzVector
& s4Mom,
G4LorentzVector
&
dir
,
88
G4double
maxCost = 1.,
G4double
minCost = -1.);
89
90
private
:
91
G4ChipsProtonElasticXS
*
PCSmanager
;
92
G4ChipsNeutronElasticXS
*
NCSmanager
;
93
94
// These working member functions are in CHIPS units and must not be used externally
95
G4double
GetQF2IN_Ratio
(
G4double
TotCS_mb,
G4int
A
);
// QuasiFree/Inelastic (fast)
96
G4double
CalcQF2IN_Ratio
(
G4double
TCSmb,
G4int
A
);
// R=QuasuFree/Inelastic (sig_t in mb)
97
std::pair<G4double,G4double>
CalcElTot
(
G4double
pGeV,
G4int
Index
);
//(sigEl,sigTot)(Index)
98
99
// Body
100
private
:
101
std::vector<G4double*> *
vT
;
// Vector of pointers to LinTable
102
std::vector<G4double*> *
vL
;
// Vector of pointers to LogTable
103
std::vector<std::pair<G4double,G4double>*> *
vX
;
// Vector of ETPointers to LogTable
104
105
G4double
lastSRatio
;
// The last sigma value for which R was calculated
106
G4double
lastRRatio
;
// The last ratio R which was calculated
107
std::vector<G4int>
vARatio
;
108
std::vector<G4double>
vHRatio
;
// Vector of max s initialized in the LinTable
109
std::vector<G4int>
vNRatio
;
// Vector of topBin number initialized in LinTable
110
std::vector<G4double>
vMRatio
;
// Vector of rel max ln(s) initialized in LogTable
111
std::vector<G4int>
vKRatio
;
// Vector of topBin number initialized in LogTable
112
113
G4int
lastARatio
;
// theLast of calculated A
114
G4double
lastHRatio
;
// theLast of max s initialized in the LinTable
115
G4int
lastNRatio
;
// theLast of topBin number initialized in LinTable
116
G4double
lastMRatio
;
// theLast of rel max ln(s) initialized in LogTable
117
G4int
lastKRatio
;
// theLast of topBin number initialized in LogTable
118
G4double
*
lastTRatio
;
// theLast of pointer to LinTable in the C++ heap
119
G4double
*
lastLRatio
;
// theLast of pointer to LogTable in the C++ heap
120
121
G4double
lastPtot
;
// The last momentum for which XS was calculated
122
G4int
lastHtot
;
// The last projPDG for which XS was calculated
123
G4bool
lastFtot
;
// The last nucleon for which XS was calculated
124
std::pair<G4double,G4double>
lastRtot
;
// The last result
125
std::vector<G4int>
vItot
;
// Vector of index for which XS was calculated
126
std::vector<G4double>
vMtot
;
// Vector of rel max ln(p) initialized in LogTable
127
std::vector<G4int>
vKtot
;
// Vector of topBin number initialized in LogTable
128
G4int
lastItot
;
// The Last index for which XS was calculated
129
G4double
lastMtot
;
// The Last rel max ln(p) initialized in LogTable
130
G4int
lastKtot
;
// The Last topBin number initialized in LogTable
131
std::pair<G4double,G4double>*
lastXtot
;
// The Last ETPointers to LogTable in heap
132
133
134
135
136
};
137
#endif
geant4
tree
geant4-10.6-release
source
processes
hadronic
models
quasi_elastic
include
G4QuasiElRatios.hh
Built by
Jin Huang
. updated:
Wed Jun 29 2022 17:25:50
using
1.8.2 with
ECCE GitHub integration