Geant4 11.2.2
Toolkit for the simulation of the passage of particles through matter
Loading...
Searching...
No Matches
G4InterpolationManager.cc
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// neutron_hp -- source file
27// J.P. Wellisch, Nov-1996
28// A prototype of the low energy neutron transport model.
29//
31
33
35{
37 switch (it) {
38 case 1:
39 result = HISTO;
40 break;
41 case 2:
42 result = LINLIN;
43 break;
44 case 3:
45 result = LINLOG;
46 break;
47 case 4:
48 result = LOGLIN;
49 break;
50 case 5:
51 result = LOGLOG;
52 break;
53 case 11:
54 result = CHISTO;
55 break;
56 case 12:
57 result = CLINLIN;
58 break;
59 case 13:
60 result = CLINLOG;
61 break;
62 case 14:
63 result = CLOGLIN;
64 break;
65 case 15:
66 result = CLOGLOG;
67 break;
68 case 21:
69 result = UHISTO;
70 break;
71 case 22:
72 result = ULINLIN;
73 break;
74 case 23:
75 result = ULINLOG;
76 break;
77 case 24:
78 result = ULOGLIN;
79 break;
80 case 25:
81 result = ULOGLOG;
82 break;
83 default:
84 throw G4HadronicException(__FILE__, __LINE__,
85 "G4InterpolationManager: unknown interpolation scheme");
86 break;
87 }
88 return result;
89}
90
92{
93 if (aPoint != nEntries) {
94 G4cout << "G4InterpolationManager::AppendScheme - " << aPoint << " " << nEntries << G4endl;
95 throw G4HadronicException(__FILE__, __LINE__,
96 "Wrong usage of G4InterpolationManager::AppendScheme");
97 }
98 if (nEntries == 0) {
99 nEntries = 1;
100 nRanges = 1;
101 start[0] = 0;
102 range[0] = 1;
103 scheme[0] = aScheme;
104 }
105 else if (aScheme == scheme[nRanges - 1]) {
106 ++range[nRanges - 1];
107 nEntries++;
108 }
109 else {
110 nEntries++;
111 nRanges++;
112 G4int i;
113 auto buffer = new G4int[nRanges];
114 auto buffer1 = new G4int[nRanges];
115 auto buff2 = new G4InterpolationScheme[nRanges];
116 for (i = 0; i < nRanges - 1; i++) {
117 buffer[i] = start[i];
118 buffer1[i] = range[i];
119 buff2[i] = scheme[i];
120 }
121 delete[] start;
122 delete[] range;
123 delete[] scheme;
124 start = buffer;
125 range = buffer1;
126 scheme = buff2;
127 start[nRanges - 1] = start[nRanges - 2] + range[nRanges - 2];
128 range[nRanges - 1] = 1;
129 scheme[nRanges - 1] = aScheme;
130 }
131}
G4InterpolationScheme
int G4int
Definition G4Types.hh:85
#define G4endl
Definition G4ios.hh:67
G4GLOB_DLL std::ostream G4cout
void AppendScheme(G4int aPoint, const G4InterpolationScheme &aScheme)
G4InterpolationScheme MakeScheme(G4int it)