Geant4 9.6.0
Toolkit for the simulation of the passage of particles through matter
Loading...
Searching...
No Matches
G4QNeutronElasticCrossSection.hh
Go to the documentation of this file.
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// GEANT4 tag $Name: not supported by cvs2svn $
28//
29//
30// GEANT4 physics class: G4QNeutronElasticCrossSection -- header file
31// M.V. Kossov, ITEP(Moscow), 24-OCT-01
32// The last update: M.V. Kossov, CERN/ITEP (Moscow) 12-Jan-2010 (from G4QElCrSect)
33//
34// -------------------------------------------------------------------------------
35// Short description: Interaction cross-sections for the G4QElastic process
36// -------------------------------------------------------------------------------
37
38#ifndef G4QNeutronElasticCrossSection_h
39#define G4QNeutronElasticCrossSection_h 1
40
41#include "G4QPDGCode.hh"
42// #include "G4QException.hh"
43#include <vector>
44#include "Randomize.hh"
45#include "G4VQCrossSection.hh"
46
48{
49protected:
50
51 G4QNeutronElasticCrossSection(); // Constructor
52
53public:
54
56
57 static G4VQCrossSection* GetPointer(); // Gives a pointer to this singletone
58
59 // Cross-section is mb. At present momentum (pMom) is in MeV=IU (@@ make Indep. Units)
60 virtual G4double GetCrossSection(G4bool fCS, G4double pMom, G4int tgZ, G4int tgN,
61 G4int pPDG=2112);
62
64 G4double pP);
65 G4double GetSlope(G4int tZ, G4int tN, G4int pPDG); // Slope of the 1st diff. maximum
66 G4double GetExchangeT(G4int tZ, G4int tN, G4int pPDG); // Randomizes -t=Q2 (in IU=MeV^2)
67 G4double GetHMaxT(); // Currrent Max(-t=Q2)/2. (in IU=MeV^2)
68
69private:
70 G4double GetPTables(G4double lpP, G4double lPm, G4int PDG, G4int tZ, G4int tN); // newLP
71 G4double GetTabValues(G4double lp, G4int pPDG, G4int tgZ, G4int tgN); // return CS(Si/Bi)
72 G4double GetQ2max(G4int pPDG, G4int tgZ, G4int tgN, G4double pP); // return -t=Q2
73
74// Body
75private:
76 // --- Data formating AMDB (define the precalculated table structure) ---
77 static const G4int nPoints;// #of points in the AMDB tables
78 static const G4int nLast; // the Last element in the table
79 static G4double lPMin; // Min tabulated logarithmic Momentum
80 static G4double lPMax; // Max tabulated logarithmic Momentum
81 static G4double dlnP; // Log step in the table
82 // ---- Local (for particular pP, pPDG, tZ, tN) -----
83 static G4bool onlyCS; // flag to calculate only CS (not S1/B1,S2/B2,S3/B3)
84 static G4double lastSIG; // Last calculated cross section
85 static G4double lastLP; // Last log(mom_of_the_incident_hadron in GeV)
86 static G4double lastTM; // Last t_maximum
87 static G4int lastN; // The last N of calculated nucleus
88 static G4int lastZ; // The last Z of calculated nucleus
89 static G4double lastP; // Last used in the cross section Momentum
90 static G4double lastTH; // Last value of the Momentum Threshold
91 static G4double lastCS; // Last value of the Cross Section
92 static G4int lastI; // The last position in the DAMDB
93 static G4double theSS; // The Last squared slope of first diffruction
94 static G4double theS1; // The Last mantissa of first diffruction
95 static G4double theB1; // The Last slope of first diffruction
96 static G4double theS2; // The Last mantissa of second diffruction
97 static G4double theB2; // The Last slope of second diffruction
98 static G4double theS3; // The Last mantissa of third diffruction
99 static G4double theB3; // The Last slope of third diffruction
100 static G4double theS4; // The Last mantissa of 4-th diffruction
101 static G4double theB4; // The Last slope of 4-th diffruction
102 // ---- Global (AMBD of P-dependent tables for pPDG,tZ,tN) -----
103 static G4int lastTZ; // Last atomic number of the target
104 static G4int lastTN; // Last number of neutrons of the target
105 static G4double lastPIN; // Last initialized max momentum
106 static G4double* lastCST; // Last cross-section table
107 static G4double* lastPAR; // Last parameters for functional calculation
108 static G4double* lastSST; // E-dep of squared slope of the first difruction
109 static G4double* lastS1T; // E-dep of mantissa of the first difruction
110 static G4double* lastB1T; // E-dep of the slope of the first difruction
111 static G4double* lastS2T; // E-dep of mantissa of the second difruction
112 static G4double* lastB2T; // E-dep of the slope of theSecond difruction
113 static G4double* lastS3T; // E-dep of mantissa of the third difruction
114 static G4double* lastB3T; // E-dep of the slope of the third difruction
115 static G4double* lastS4T; // E-dep of mantissa of the 4-th difruction
116 static G4double* lastB4T; // E-dep of the slope of the 4-th difruction
117
118 static std::vector <G4double*> PAR; // Vector of parameters for functional calculations
119 static std::vector <G4double*> CST; // Vector of cross-section table
120 static std::vector <G4double*> SST; // Vector of the first squared slope
121 static std::vector <G4double*> S1T; // Vector of the first mantissa
122 static std::vector <G4double*> B1T; // Vector of the first slope
123 static std::vector <G4double*> S2T; // Vector of the secon mantissa
124 static std::vector <G4double*> B2T; // Vector of the second slope
125 static std::vector <G4double*> S3T; // Vector of the third mantissa
126 static std::vector <G4double*> B3T; // Vector of the third slope
127 static std::vector <G4double*> S4T; // Vector of the 4-th mantissa (gloria)
128 static std::vector <G4double*> B4T; // Vector of the 4-th slope (gloria)
129 };
130#endif
double G4double
Definition: G4Types.hh:64
int G4int
Definition: G4Types.hh:66
bool G4bool
Definition: G4Types.hh:67
G4double GetSlope(G4int tZ, G4int tN, G4int pPDG)
G4double CalculateCrossSection(G4bool CS, G4int F, G4int I, G4int pPDG, G4int Z, G4int N, G4double pP)
virtual G4double GetCrossSection(G4bool fCS, G4double pMom, G4int tgZ, G4int tgN, G4int pPDG=2112)
G4double GetExchangeT(G4int tZ, G4int tN, G4int pPDG)